web-dev-qa-db-ja.com

AWS SAMローカルを実行するときにテンプレートパラメータを指定するにはどうすればよいですか?

AWS SAM Local を使用するサーバーレスアプリケーションをローカルでテストできます。

AWSにデプロイする もできます。これは明らかにaws cloudformation deployと同じフラグをとるので、パラメーターファイルを渡すことができます。アプリケーションシークレット(APIキーなど)。

ただし、ローカルでテストするときにパラメーターファイルを使用する方法について、aws local start-api --helpまたはGithubのドキュメントには何も見つかりません。

sam local start-apiの実行時に、テンプレートで使用するパラメーターファイルをどのようにポイントしますか?

7
Tomas Aschan

--parameter-overridesスイッチを使用できます。構文は次のようにかなり長くなっています。

sam local start-api --parameter-overrides ParameterKey=Key1,ParameterValue=value1 ParameterKey=Key2,ParameterValue=value2

つまり、各ペアのkeyおよびvaluecomma区切りで指定する必要があります。

そして、各ペアスペースで区切られます。


sam local start-api --helpから:

  --parameter-overrides       Optional. A string that contains
                              CloudFormation parameter overrides encoded
                              as key=value pairs. Use the same format as
                              the AWS CLI, e.g. 'ParameterKey=KeyPairName,
                              ParameterValue=MyKey ParameterKey=InstanceTy
                              pe,ParameterValue=t1.micro'
11
kichik

-nまたは--env-varsパラメーターを使用して、JSONファイルの環境変数を関数に渡すこともできるようです。ドキュメントを参照してください: SAM CLIを使用してサーバーレスアプリケーションをローカルでテストする(パブリックベータ版)

つまり、JSONファイルは次のようになります(ドキュメントからコピーした例)。

{
  "MyFunction1": {
    "TABLE_NAME": "localtable",
    "BUCKET_NAME": "testBucket"
  },
  "MyFunction2": {
    "TABLE_NAME": "localtable",
    "STAGE": "dev"
  },
}

そして、あなたは行うことができます:

 $ sam local start-api --env-vars env.json

これは特にラムダ関数の環境変数のためのものですので、あなたが求めているものとは完全には違うかもしれませんか?

1
sgdesmet

私の奇妙な経験は、それがパラメーターの順序に依存するということでした。 Mongoインスタンスを指すSecretKeyとDatabaseUriの2つのパラメーターがありました。最初にDatabaseUriを使用したときは、SecretKeyがロードされておらず、パラメータSecretKeyがないためにビルドが失敗しました。私が本当に必死だったとき、私は最初にSecretKeyを持つパラメータを交換し、それが機能し始めました!

0
Leos Literak

わずかな変更を加えたaws cloudformation deployと同様に、sam deployで--parameter-overridesを使用できます。

前:

sam deploy --template-file packaged.yaml --stack-name example-lambda --capabilities CAPABILITY_IAM --parameter-overrides ParameterKey=SourceS3Bucket ParameterValue=test-data-111

後:

sam deploy --template-file packaged.yaml --stack-name example-lambda --capabilities CAPABILITY_IAM --parameter-overrides SourceS3Bucket=test-data-111

注目すべき変更:sam deployでParameterKey、ParameterValueを明示的に指定する必要はありません。ローカルテストで私を助けます。

それが役に立てば幸い。 :)

0
Ashwani Jha