ECSからSystems Managerの値参照しようとしたらResourceInitializationErrorが出た

ECS, Fargateで起動させてたサーバーで環境変数が必要だったのでSystems Managerで定義してタスク定義のコンテナ追加の部分の環境変数でValueFromでそのSystems Managerの値を参照しようとしたら ResourceInitializationError ~ が出た。

タスク実行ロールには [ecsTaskExecutionRole] を使っていた。(覚えてないけど確かデフォルトで作成されてたやつ)

他のAWSのサービスに対してこのタスクから色々やる場合はここで権限を与えないといけない

エラーの原因

Systems Managerに対する権限がない

解決法

タスク実行ロールのecsTaskExecutionRoleにSystems Managerの値を参照できるように権限を与える。

まずポリシーの作成で

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters"
            ],
            "Resource": [
                "arn:aws:ssm:ap-northeast-1:<アカウントID>:parameter/<Systems Managerに定義したパラメータ>"
            ]
        }
    ]
}

を定義して作成

これで指定したリソースに指定したアクションが許可される。

次にecsTaskExecutionRoleにこのポリシーをアタッチ

これで権限が与えらた

参照

AWS IAMポリシーを理解する | DevelopersIO

Systems Manager パラメータストアを使用した機密データの指定 - Amazon Elastic Container Service