2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

API GatewayでLambdaに関数:${stageVariables.alias}を指定してエラーが出た場合

Last updated at Posted at 2021-09-21

動作環境

  • 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関数にエイリアスが設定されていません。

あとがき

  • とりあえず、忘れないうちに急いでまとめたので、間違っているかもしれません。
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?