2016-03-20 11 views
3

私はS3バケットへのアクセス権が与えられている:IAMユーザーアカウントで//のfolder1/folder2に/ *boto3を使ってURLからS3バケットにアクセスする方法は?

S3ベースパス:S3を

ARN:AWS:IAMを:: <アカウント>:ユーザー/ <ユーザー名>

私は以下を試しましたが運はありませんでした。

import boto3 
client = boto3.client(
    's3', 
    aws_access_key_id='****', 
    aws_secret_access_key='****' 
) 
obj1 = client.get_object("folder1/folder2/*") #TypeError 
obj2 = boto3.resource("folder1/folder2/*") # DataNotFoundError 

これについての助けがあれば助かります。ありがとう!

+0

オブジェクトを取得しようとしていますかct、またはバケットの内容を表示する –

答えて

1

S3パスが形式でバケットとオブジェクトで構成されています

s3://<Bucket>/<Key> 

あなたはバケツにあなたの「s3_key」を分割し、キーには、以下の式を使用することができます。

bucket, key = s3_key.split('/',2)[-1].split('/',1) 

だから、オブジェクトにアクセスするにはs3:// folder1/folder2のパスから次のようにします。

import boto3 
client = boto3.client('s3') 
client.get_object(Bucket='folder1', Key='folder2') 
+0

s3:// folder1/folder2/folder3/*にアクセスでき、s3:// folder1/folder2/*にアクセスできない場合はどうすればいいですか? – piby190

+0

次にfolder2/folder3/*があなたの鍵です – Vor

+1

次の代替手段は動作しません。 '1)キー= "フォルダ2/FOLDER3" 2)キー= "フォルダ2/FOLDER3 /" 3)キー= "フォルダ2/FOLDER3/*"' しかしAWS-CLIで、次のコマンドが完璧に動作します: 'aws s3 ls s3:// folder1/folder2/folder3 /' – piby190

関連する問題