[英]How do I upload to AWS S3 from iOS without Cognito?
我的目標:
使用最簡單的代碼將照片從iOS上傳到常見的AWS S3存儲桶
我試過的:
最佳實踐假設:
我認為Cognito是我完成所有閱讀后設置圖像上傳的默認方式。 但是,我這樣做有兩個問題:
我的問題:
Cognito Identity是一項免費服務,因此您無需支付任何費用。 此外,您真的不應該在您的應用程序中使用硬編碼憑據,因為它可以很容易地反編譯和檢索,這不是服務器端代碼的情況。
對於iOS SDK,您可以使用AWSStaticCredentialsProvider
作為向任何服務客戶端提供靜態憑據的方法。
AWSStaticCredentialsProvider *credentialsProvider = [AWSStaticCredentialsProvider credentialsWithAccessKey:@"YourAccessKey" secretKey:@"YourSecretKey"];
你真的不應該在生產應用程序中這樣做。
我建議不要在沒有Cognito的情況下在Moblie應用程序中使用AWS。
如果您仍想這樣做,您可以為您的存儲區資源創建IAM用戶集策略,並將IAM用戶憑據放入您的代碼中“AWSCredentials credentials = new AWSCredentials(){
@Override
public String getAWSSecretKey() {
// TODO Auto-generated method stub
return "YOUR_SECRETKEY";
}
@Override
public String getAWSAccessKeyId() {
// TODO Auto-generated method stub
return "YOUR_IAM_AWS_ACCESS_KEY_ID";
}
};
AmazonS3 s3 = new AmazonS3Client(credentials);`
請注意,該方法使用危險!! 您可以設置AWS S3 Bucket權限策略而不是S3權限策略 。
認知的一部分需要使這項工作是免費的。 來自cognito FAQ :
“使用Cognito Identity,用於驗證用戶身份和生成唯一標識符的聯合身份驗證功能始終是免費的。”
此外,AWS SDK中還有一個方法AssumeRoleWithWebIdentity ,它允許您使用openid連接提供程序承擔AWS IAM中定義的角色。 如果您沒有使用開放式ID連接提供程序,但您已設法使用后端進行身份驗證,則可以使用Cognito.GetOpenIdTokenForDeveloperIdentity為此用例提供令牌。
這里有一個很好的理解資源: https : //aws.amazon.com/blogs/mobile/understanding-amazon-cognito-authentication-part-2-developer-authenticated-identities/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.