[英]AWS S3 upload without access and secret key in Java
我想在不使用AWS
服務器的訪問權限和密鑰的情況下將文件上傳到S3。 AWS鍵應作為默認值。 但是,在服務器中運行以下命令,我可以訪問它而無需提供任何訪問和密鑰。
aws s3 cp somefile.txt s3:// somebucket /
從Java代碼,它無法訪問,因為它無法加載憑據。 以下是我的代碼。
AmazonS3 s3client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());
當您嘗試從EC2實例連接到S3存儲桶時,可以使用以下Java代碼獲取s3client
實例。
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new InstanceProfileCredentialsProvider(false))
.build();
這是推薦的方法,因為應用程序不需要在屬性文件中維護訪問鍵。
IAM角色的示例政策: -
{
"Action": ["s3:PutObject",
"s3:ListBucket",
"s3:GetObject",
"s3:DeleteObject"],
"Resource": ["arn:aws:s3:::yourBucketName",
"arn:aws:s3:::yourBucketName/*"],
"Effect": "Allow",
"Sid": "AllowBucketLinux"
}
根據文檔AWS憑證提供程序鏈,按此順序查找憑據:
檢查您是否在上述任何一項中指定了有效憑據。
參考: http : //docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.