web-dev-qa-db-ja.com

ポリシーはレガシー解析に失敗しました

AWSでIAMロールを作成しようとしていますが、作成中にエラーに直面しています

「リクエストの処理中に次のエラーが発生しました。ロールに権限を添付する際に問題が発生しました。ロールは権限なしで作成されます。ポリシーはレガシー解析に失敗しました」

{"Version": "2012-10-17",  "Statement": [
{
  "Effect": "Allow",
  "Action": [
    "logs:CreateLogGroup",
    "logs:CreateLogStream",
    "logs:PutLogEvents"
  ],
  "Resource": "arn:aws:logs:*:*:*"
},
{
  "Action": [
    "sqs:SendMessage",
    "sqs:GetQueueUrl"
  ],
  "Effect": "Allow",
  "Resource": "arn:aws:sqs:ap-northeast-1:SOME_ID_HERE:test-messages"
}]}
20
Mani Teja

私はこのエラーを受け取りましたが、理解できませんでした。同僚と私はそれを注いだ後、Fn::Subなしで置換変数を残したことを発見しました。

"Resource": "arn:aws:logs::${AWS::AccountId}:*

このエラーが発生します。もちろん

"Resource": { "Fn::Sub": "arn:aws:logs::${AWS::AccountId}:*" }

ところで、私の経験では、私はE.Jに同意します上記のBrennanでは、地域にワイルドカードを使用することはできません。代わりに、私が行ったように空白のままにします。

22
rubyisbeautiful

今日見つけた楽しい新しいエラー状態:

次の場合:

  • パラメーターを介してアカウントIDを提供するCFNテンプレートがあります
  • そして、パラメーターのDefault propを使用してアカウントIDを提供します
  • そして、アカウントIDは0で始まります

CFNは実際にパラメーターを整数として読み取ります(9.3476294382E10のようにキャストします)-パラメーターにType: Stringがあるかどうかに関係なく、または!!strを使用して明示的にキャストします。

そのため、解決策は、Default: "093476294382"を使用する代わりに、デプロイメントにパラメーターを手動で提供することです。

誰か他の人を救うことを願っています。

1
Max Kaye

S3で失敗した場合は、正しいarn形式を使用していることを確認してください。

  • 正しいものは3です:::arn:aws:s3 ::: AccountABucketName

    「リソース」:「arn:aws:s3 ::: AccountABucketName」

  • 間違った1 2 ::arn:aws:s3 :: AccountABucketName

    「リソース」:「arn:aws:s3 :: AccountABucketName」

1
aspdeepak

発生する可能性のある問題の1つは、ロググループとログストリームの間に余分なものがあるため、クラウドウォッチログARNSに6つのシンボルがある場合があることです。例えば:

"Resource": "arn:aws:logs:us-west-2:123456789012:/my/log/group:log-stream"

またはあなたの場合:

"Resource": "arn:aws:logs:*:*:*:*

6番目の:が追加されていない場合、上記のより具体的な例などのいくつかのARNSでこのエラーが発生することがわかりました。これはドキュメント(E.Jが提供するドキュメントを含む)と矛盾することを理解しているため、AWS内のどこかのバグである可能性があります

http://docs.aws.Amazon.com/AmazonCloudWatch/latest/logs/iam-identity-based-access-control-cwl.html

0
hayduke

Arnの領域をワイルドカード化できるとは思わないので、代わりに次のようなものが必要になる場合があります。

arn:aws:logs:us-east-1:*:*

、us-east-1の代わりに使用している地域を指定します。

詳細はこちら:

http://docs.aws.Amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-cloudwatch-logs

0
E.J. Brennan

できると思う

    "Resource": "arn:aws:logs:us-west-2:123456789012:*"

そうでない場合は、マッピングを使用してアカウントを地域にマッピングできます。

    "mAWSRegionToAccountsMap": {
        "us-west-2": {
            "prod": "444444444673",
            "dev": "678333333333"

        },
        "us-gov-west-1": {
            "dev": "12345678903",
            "prod": "234345345345"
        }
    }

次に、区切り文字に「:」を使用して、マッピングを結合に統合します

    "Resource": {
        "Fn::Join": [
            ":",
            [
                "arn:aws:logs",
                { 
                    "Ref": "AWS::Region" 
                },
                {
                    "Fn::FindInMap": [
                        "mAWSRegionToAccountsMap",  {
                            "Ref": "AWS::Region"
                        },
                        "prod"
                    ]
                },
                "/*"
            ]
        ]
    }

エンディングを微調整する必要があるかもしれません

0
BlackJeep