本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為您的 Web 和行動應用程式取得 AWS 登入資料的建議方法是使用 Amazon Cognito。Amazon Cognito 可協助您避免在檔案上硬式編碼 AWS 登入資料。它使用 AWS Identity and Access Management (IAM) 角色,為您的應用程式已驗證和未驗證的使用者產生臨時憑證。
例如,若要將 JavaScript 檔案設定為使用 Amazon Cognito 未驗證角色來存取 Amazon DynamoDB Web 服務,請執行下列動作。
設定登入資料來與 Amazon Cognito 互動
-
建立允許未驗證身分的 Amazon Cognito 身分集區。
aws cognito-identity create-identity-pool \ --identity-pool-name DynamoPool \ --allow-unauthenticated-identities \ --output json { "IdentityPoolId": "us-west-2:12345678-1ab2-123a-1234-a12345ab12", "AllowUnauthenticatedIdentities": true, "IdentityPoolName": "DynamoPool" }
-
將下列政策複製到名為
myCognitoPolicy.json
的檔案。將身分集區 ID (us-west-2:12345678-1ab2-123a-1234-a12345ab12
) 取代為上一個步驟中IdentityPoolId
取得的您自己的 ID。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-west-2:12345678-1ab2-123a-1234-a12345ab12" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } } ] }
-
建立採用上述政策的 IAM 角色。如此一來,Amazon Cognito 會成為可擔任
Cognito_DynamoPoolUnauth
角色的信任實體。aws iam create-role --role-name Cognito_DynamoPoolUnauth \ --assume-role-policy-document file://PathToFile/myCognitoPolicy.json --output json
-
連接受管政策 (
AmazonDynamoDBFullAccess
),將 DynamoDB 的完整存取權授予Cognito_DynamoPoolUnauth
角色。aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess \ --role-name Cognito_DynamoPoolUnauth
注意
或者,您也可以將精細定義存取權授予 DynamoDB。如需詳細資訊,請參閱使用IAM政策條件進行精細存取控制。
-
取得並複製IAM角色 Amazon Resource Name (ARN)。
aws iam get-role --role-name Cognito_DynamoPoolUnauth --output json
-
將
Cognito_DynamoPoolUnauth
角色新增至DynamoPool
身分集區。要指定的格式為KeyName=string
,其中KeyName
為 ,unauthenticated
字串為上一個步驟中ARN取得的角色。aws cognito-identity set-identity-pool-roles \ --identity-pool-id "us-west-2:12345678-1ab2-123a-1234-a12345ab12" \ --roles unauthenticated=arn:aws:iam::123456789012:role/Cognito_DynamoPoolUnauth --output json
-
在您的檔案中指定 Amazon Cognito 登入資料。並依照上一步的程式碼修改
IdentityPoolId
與RoleArn
。AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: "us-west-2:12345678-1ab2-123a-1234-a12345ab12", RoleArn: "arn:aws:iam::123456789012:role/Cognito_DynamoPoolUnauth" });
您現在可以使用 Amazon Cognito 登入資料,針對 DynamoDB Web 服務執行您的 JavaScript 程式。如需詳細資訊,請參閱《AWS SDK for JavaScript 入門指南》中的在 Web 瀏覽器設定登入資料。