動作環境
- MacBook Air (M1, 2020)
- AWS
- AWS CLIがインストールされていること
:${stageVariables.alias}とは
-
:${stageVariables.alias}
とは、API Gatewayのステージ変数です。 - これをLambda関数のあとに指定すると、ステージごとに異なる値を設定できます。
- 保存時に出てくるコマンドをAWS CLIを使って手動で指定します。
- 参考サイト
-
参考サイト2
- 手順はリンク先のページを参考にして下さい。このページではあくまで、エラーに関しての解決策を書いています。
ターミナルから実行する際にハマったエラー
- 以下のコマンドを実行する際にいろんなエラーが出ます。
- 正確には、AWSの画面で表示されるコードをそのままターミナルにペーストすると、複数の原因によりエラーになってしまいます。
aws lambda add-permission --function-name arn:aws:lambda:ap-northeast-1:000000000000:function:test-hello:dev --source-arn 'arn:aws:execute-api:ap-northeast-1:000000000000:xxxxxxxxxx/*/GET/' --principal apigateway.amazonaws.com --statement-id 00000000-000000000-000000000000000 --action lambda:InvokeFunction
bad substitutionが表示される場合
- モーダルで表示されたコマンドの
:${stageVariables.alias}
をエイリアスで決めた変数名に置き換えてから、コマンドを実行しましょう。
>が表示される場合
- --function-nameのダブルクォーテーションを削除しましょう。
-
control + c
で抜けれます。
aws: error: argument operation: Invalid choice, valid choices are:が表示される場合
- オプションの前の半角スペースの数を1つに変えましょう。(デフォルトでは半角スペースが3つ入っていますが、このまま実行すると、上記のエラーになります。)
-
--action lambda:InvokeFunction
の後のスペースを一度消してから、もう一度半角スペースを入れて見てください。もしかすると、エラーが解消されるかもしれません。(--profile などのオプションを追加した場合など)
You must specify a region. You can also configure your region by running "aws configure".が表示される場合
- 複数のAWSのアカウントをcredentialsで管理している場合は、コマンドの最後に
--profile [文字列]
を追加して実行しましょう。 - また、
~/.aws/credentials
のファイルか、~/.aws/config
のファイルが間違っているために、このエラーが表示されている可能性もあります。正しく修正しましょう。 - 参考サイト
zsh: no matches found:が表示される場合
- 原因が2つ考えられます。1つは、ダブルクォーテーションを利用していることが原因の場合、2つ目はzshを利用していることが原因である場合です。
ダブルクォーテーションを利用している場合
- ダブルクォーテーションを削除して実行します。
- 参考サイト
zshを利用している場合
- ~/.zshrcに以下を記述して、source ~/.zshrc
setopt +o nomatch
-
別の解決策として、zshからbashにSHELLを切り替える方法もあります。
aws: error: the following arguments are required: --actionのエラーが表示された場合
-
--action
の直前の半角スペースをもう一度入れ直したら、解決しました。
An error occurred (ResourceNotFoundException) when calling the AddPermission operation: Cannot find alias arn: arn:aws:lambda:ap-northeast-1:yyyyyyyyyyy:function:xxxxxxxxx:dev のエラーが表示された場合
- Lambda関数にエイリアスが設定されていません。
あとがき
- とりあえず、忘れないうちに急いでまとめたので、間違っているかもしれません。