Aws-cli: ポリシーは有効なJSONである必要があり、最初のバイトは「{」である必要があります

作成日 2017年08月19日  ·  3コメント  ·  ソース: aws/aws-cli

こんにちは。 私はいくつかの問題でこのエラーを見てきました、そして私は疲れているに違いありません。 解決策がどうあるべきかは私にはわかりません。 バケットポリシーをアップロードしようとしていますが、JSONエラーが発生します。 次に、ダウンロード(UIを使用して入力し、正常に機能しました)/アップロードすると、同じエラーが発生します。 ツールを使用してこれをアップロードする方法について何か提案はありますか? 良い仕事を続けてください!

$ aws s3api get-bucket-policy --bucket cloud-1-$NAME > student-1-bucket.manual.json
$ aws s3api put-bucket-policy --bucket cloud-1-$NAME --policy student-1-bucket.manual.json 

An error occurred (MalformedPolicy) when calling the PutBucketPolicy operation: Policies must be valid JSON and the first byte must be '{'
$ cat student-1-bucket.manual.json 
{
    "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"ExampleStatement1\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::934017622331:user/student-1-cloud\"},\"Action\":\"*\",\"Resource\":\"arn:aws:s3:::cloud-1-14604\"}]}"
}
$

最も参考になるコメント

--policyは通常、JSON文字列を受け入れます。これは、ファイル名が実際に使用するJSONドキュメントであると見なします。 ファイルでそれを行うには、次のようにfile://プロトコルを利用する必要があります。

aws s3api put-bucket-policy --bucket cloud-1-$NAME --policy file://student-1-bucket.manual.json

私はあなたの環境にアクセスできないことに注意してください。そのため、 file://ビットが失敗した場合は、代わりにstudent-1-bucket.manual.jsonへの絶対パスを提供することをお勧めします。

全てのコメント3件

--policyは通常、JSON文字列を受け入れます。これは、ファイル名が実際に使用するJSONドキュメントであると見なします。 ファイルでそれを行うには、次のようにfile://プロトコルを利用する必要があります。

aws s3api put-bucket-policy --bucket cloud-1-$NAME --policy file://student-1-bucket.manual.json

私はあなたの環境にアクセスできないことに注意してください。そのため、 file://ビットが失敗した場合は、代わりにstudent-1-bucket.manual.jsonへの絶対パスを提供することをお勧めします。

@cwgemあなたは完全に正しいです! ありがとう。

仕様:

aws s3api put-bucket-policy \
--bucket $BucketName \ 
--policy file://$PathToPolicy/bucketpolicy.json

例えば:

aws s3api put-bucket-policy \
--bucket firstbucket.mydomain.com \
--policy file:///Users/Andy/Desktop/bucketpolicy.json
このページは役に立ちましたか?
0 / 5 - 0 評価