資料がないようですので、試行錯誤の末に回答させていただきます。
背景として、サーバーレスフレームワーク[AWSSSMパラメーターストアからプレーンテキストとSecureStringの両方の値をロードできます]。1
サーバーレスデプロイを実行するときに、これらのSSMパラメーターストア値にアクセスしてロードするには、どのようなアクセス許可が必要ですか?
一般に、AWS SSMパラメータストアの値にアクセスして復号化するには、次の3つの権限が必要です。
ssm:DescribeParameters
ssm:GetParameters
kms:Decrypt
-
これは、ラムダ関数に関連するSSMパラメーターへのアクセスのみを許可する実際の例です(一般的な命名規則/パターンに従うことで区別されます)-次の状況で機能します:
すべてのパラメーターは、次の命名規則を使用します
a。 /${app-name-or-app-namespace}/serverless/${lambda-function-name/then/whatever/else/you/want
b。${lambda-function-name}
で始まる必要がありますsls-
たとえばmyCoolApp
、と呼ばれるアプリと、と呼ばれるLambda関数があるとしsls-myCoolLambdaFunction
ます。おそらく、ユーザー名やパスワードなどのデータベース構成値を保存したいと思います。
2つのSSMパラメーターを作成します。
/myCoolApp/serverless/sls-myCoolLambdaFunction/dev/database/username
(平文)
/myCoolApp/serverless/sls-myCoolLambdaFunction/dev/database/password
(SecureString)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:DescribeParameters"
],
"Resource": [
"arn:aws:ssm:${region-or-wildcard}:${aws-account-id-or-wildcard}:*"
]
},
{
"Effect": "Allow",
"Action": [
"ssm:GetParameter"
],
"Resource": [
"arn:aws:ssm:${region-or-wildcard}:${aws-account-id-or-wildcard}:parameter/myCoolApp/serverless/sls-*"
]
},
{
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:*:${aws-account-id}:key/alias/aws/ssm"
]
}
]
}
次に、serverless.ymlファイルで、これら2つのSSM値を次のような関数レベルの環境変数として参照する場合があります。
environment:
DATABASE_USERNAME: ${ssm:/myCoolApp/serverless/sls-myCoolLambdaFunction/dev/database/username}
DATABASE_PASSWORD: ${ssm:/myCoolApp/serverless/sls-myCoolLambdaFunction/dev/database/password~true}
または、さらに良いことに、ステージに応じて構成値が異なる状況で超動的になりたい場合は、次のように環境変数を設定できます。
environment:
DATABASE_USERNAME: ${ssm:/myCoolApp/serverless/sls-myCoolLambdaFunction/${self:provider.stage}/database/username}
DATABASE_PASSWORD: ${ssm:/myCoolApp/serverless/sls-myCoolLambdaFunction/${self:provider.stage}/database/password~true}
上記の例では、2つのステージがあった場合- dev
&prod
、おそらく次のSSMパラメーターを作成します。
/myCoolApp/serverless/sls-myCoolLambdaFunction/dev/database/username
(平文)
/myCoolApp/serverless/sls-myCoolLambdaFunction/dev/database/password
(SecureString)
/myCoolApp/serverless/sls-myCoolLambdaFunction/prod/database/username
(平文)
/myCoolApp/serverless/sls-myCoolLambdaFunction/prod/database/password
(SecureString)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加