2016-12-26 13 views
1

S3バケットをあるアカウント(A)から別のアカウント(B)に移動しようとしています。 私はその操作に成功し、アカウントAからバケツを削除しました。 アカウントBの新しいバケットをアカウントBの別のバケットに移動しようとしていますが、バケット自体の横にあるファイルにアクセスできません。 s3 cliとその多くのアクセス権とその許可を得た後、私はs3apiコマンドをチェックして、ファイル(驚きの驚き)がまだ古い所有権を保持していることを発見しました。 私は今それを変更しようとしていますが、put-bucket-aclでまだ立つようになりましたが、JSONファイルはs3apiコマンドでは機能しません。 私はデバッグでコマンドを実行しようとしましたが、あまりそれをしませんでした。 誰も何をすべきか知っていますか? この問題を解決するにはより良い方法でしょうか? コマンド::私はこれまで何をしたかAWS S3権限 - put-bucket-aclエラー

"Grantee": { 
"DisplayName": "account_B", 
"EmailAddress": "[email protected]", 
"ID": "111111hughalphnumericnumber22222", 
"Type": "CanonicalUser", 
"Permission": "FULL_CONTROL" 
} 

私が取得エラー:

1.jsonファイル

aws s3api put-bucket-acl --bucket my-bucket --cli-input-json file://1.json 

(プット・オブジェクトのACLと同じ) :

入力の不明なパラメータ: "権限受領者"、のいずれかでなければなりません:ACL、 AccessControlPolicy、バケツ、ContentMD5、GrantFullControl、GrantRead、 GrantReadACP、GrantWrite、入力中GrantWriteACP未知パラメータ:ACL、AccessControlPolicy、バケツ、 : "許可" は、のいずれかでなければなりませんContentMD5、GrantFullControl、GrantRead、GrantReadACP、GrantWrite、 GrantWriteACP

UPDATE:2つの口座間 AssumeRoleは、私の場合には動作しません。 私はAWSのサポートに接続しており、最高のものを望んでいます。私はAWSサポートに接続しています。 解決策があるときに更新します。

答えて

1

AWSのサポートが救助に来て、...私は見て他の人のためにこれを残しているので、彼らは持っていません。

aws s3api get-bucket-acl --bucket <Bucket_on_B> --profile IAM_User_B 
:私は、地獄は何が悪かったのか理解しようとしなかったのように... 2日間を無駄にすることは

aws s3api get-object-acl --bucket <bucket_on_B> --key <Key_on_B_Owned_by_A> --profile IAM_User_A > A_to_B.json 

の成果を適用しますその後、作成されたJSONファイルへ

、および

aws s3api put-object-acl --bucket <Bucket_on_B> --key <Key_on_B_Owned_by_A> --access-control-policy file://A_to_B.json --profile IAM_User_A 
1

あなたのJSONが間違っています。 put-bucket-aclオプションのto the documentationによれば、--generate-cli-skeletonを使用して有効なJSONテンプレート( 'skeleton')を生成できます。たとえば:

aws s3api put-bucket-acl --bucket BUCKETNAME --generate-cli-skeleton 

そして、ここでは、出力されますので、

{ 
    "ACL": "", 
    "AccessControlPolicy": { 
     "Grants": [ 
      { 
       "Grantee": { 
        "DisplayName": "", 
        "EmailAddress": "", 
        "ID": "", 
        "Type": "", 
        "URI": "" 
       }, 
       "Permission": "" 
      } 
     ], 
     "Owner": { 
      "DisplayName": "", 
      "ID": "" 
     } 
    }, 
    "Bucket": "", 
    "ContentMD5": "", 
    "GrantFullControl": "", 
    "GrantRead": "", 
    "GrantReadACP": "", 
    "GrantWrite": "", 
    "GrantWriteACP": "" 
} 
+0

を実行して、私は、このオプションの承知していますが、私はパラメータ - に明確ではないよ、私はそれらすべてを挿入する必要がありますか?公開したくない場合は、どうすれば "URI"を取得できますか?「ContentMD5」はどこにありますか 私は「所有者」です - 古い所有者を挿入しますか? 電子メールアドレスのないユーザーがいる場合はどうすればよいですか?彼にアクセスを与える方法? ありがとう! – Busted

+0

http://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-acl.htmlとhttp://docs.aws.amazon.comに最小限の構造の良い例があります/AmazonS3/latest/API/RESTBucketPUTacl.html。 'ContentMD5'は省略できます。 'AmazonCustomerByEmail'を使わず、代わりに' CanonicalUser'や 'Group'を使うと、ユーザの電子メールを省略することができます。 –

関連する問題