谁能帮我找到如何使用客户端 Access key ID
和 Secret access key
访问 AWS S3 Bucket 资源?
或者这是已弃用的 AWS API?我找到了很多解决方案,但都使用了我不想使用的 identityPoolId
。
最佳答案
您可以使用两种方式登录。
- 在您的代码中使用凭据。
- 将您的凭据保存在一个文件中。
通过在您的代码中使用凭据。
// credentials object identifying user for authentication
// user must have AWSConnector and AmazonS3FullAccess for
// this example to work
AWSCredentials credentials = new BasicAWSCredentials("YourAccessKeyID", "YourSecretAccessKey");
// create a client connection based on credentials
AmazonS3 s3client = new AmazonS3Client(credentials);
将您的凭据保存在一个文件中:
/*
* Create your credentials file at ~/.aws/credentials (C:\Users\USER_NAME\.aws\credentials for Windows users)
* and save the following lines after replacing the underlined values with your own.
*
* [default]
* aws_access_key_id = YOUR_ACCESS_KEY_ID
* aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
*/
AWSCredentials credentials = new ProfileCredentialsProvider().getCredentials();
AmazonS3 s3 = new AmazonS3Client(credentials);
crud操作可以引用这个教程:https://github.com/aws/aws-sdk-java/blob/master/src/samples/AmazonS3/S3Sample.java
// Create a bucket
System.out.println("Creating bucket " + bucketName + "\n");
s3.createBucket(bucketName);
/*
* List the buckets in your account
*/
System.out.println("Listing buckets");
for (Bucket bucket : s3.listBuckets()) {
System.out.println(" - " + bucket.getName());
}
/*
* Delete an object - Unless versioning has been turned on for your bucket,
* there is no way to undelete an object, so use caution when deleting objects.
*/
System.out.println("Deleting an object\n");
s3.deleteObject(bucketName, key);
/*
* Delete a bucket - A bucket must be completely empty before it can be
* deleted, so remember to delete any objects from your buckets before
* you try to delete them.
*/
System.out.println("Deleting bucket " + bucketName + "\n");
s3.deleteBucket(bucketName);
具体bucket的权限,请看图:
添加权限:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::riz-bucket001/*"
}
]
}
注意:此存储桶策略使存储桶中的所有内容都可公开读取。所以要小心使用它。如果你以学习为目的,那OK。但出于商业目的,请勿使用它。
非常感谢Michael - sqlbot
您可以根据需要在此处查看更多政策:Specifying Permissions in a Policy
关于ios - AWS S3 存储桶问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40803668/