

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定工作階段登入資料
<a name="session-credentials-setup"></a>

## 步驟 1：建立 IAM 角色
<a name="session-credentials-step1"></a>

在帳戶中建立名稱開頭為 的 IAM 角色，`GameLiftStreams-`以及允許`gameliftstreams.amazonaws.com`服務主體擔任該角色的信任政策。

**重要**  
角色名稱必須以 `GameLiftStreams-` 開頭。您無法在建立後重新命名角色。如果您使用沒有此字首的角色， `StartStreamSession`會傳回錯誤。如需詳細資訊，請參閱[對工作階段登入資料進行故障診斷](session-credentials-troubleshooting.md)。

建議您將 `aws:SourceAccount`和 `aws:SourceArn`條件新增至信任政策。這些條件使用您的 AWS 帳戶 ID，並限制哪些工作階段可以擔任該角色。如需有關防止跨服務模擬的詳細資訊，請參閱《*IAM 使用者指南*》中的[跨服務混淆代理人預防](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)。

```
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": { "Service": "gameliftstreams.amazonaws.com" },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringEquals": {
        "aws:SourceAccount": "{{123456789012}}"
      },
      "ArnLike": {
        "aws:SourceArn": "arn:aws:gameliftstreams:*:{{123456789012}}:streamsession/*"
      }
    }
  }]
}
```

以您的 AWS 帳戶 ID 取代兩個出現的 {{123456789012}}。

**注意**  
[服務連結角色 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)（由包含 ARNs 識別`/aws-service-role/`) 無法與此功能搭配使用。請改為建立 IAM 角色。

## 步驟 2：將許可連接至角色
<a name="session-credentials-step2"></a>

將 IAM 政策連接至僅授予應用程式所需許可的角色。如需範圍許可的指引，請參閱《*IAM 使用者指南*》中的[授予最低權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。

例如，如果您的應用程式需要從 Amazon S3 儲存貯體讀取：

```
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "s3:GetObject",
      "s3:ListBucket"
    ],
    "Resource": [
      "arn:aws:s3:::{{my-game-assets-bucket}}",
      "arn:aws:s3:::{{my-game-assets-bucket}}/*"
    ]
  }]
}
```

## 步驟 3：授予 iam：PassRole 許可
<a name="session-credentials-step3"></a>

呼叫 的 IAM 主體`StartStreamSession`必須具有將角色傳遞至 Amazon GameLift Streams 的許可。將下列陳述式新增至委託人的 IAM 政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[授予使用者將角色傳遞至 AWS 服務的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)。

```
{
  "Effect": "Allow",
  "Action": "iam:PassRole",
  "Resource": "arn:aws:iam::{{123456789012}}:role/GameLiftStreams-{{MyAppRole}}",
  "Condition": {
    "StringEquals": {
      "iam:PassedToService": "gameliftstreams.amazonaws.com"
    }
  }
}
```

## 步驟 4：使用 角色啟動串流工作階段
<a name="session-credentials-step4"></a>

呼叫 [StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html) 時傳遞角色 ARN：

```
aws gameliftstreams start-stream-session \
    --stream-group-identifier {{sg-1AB2C3De4}} \
    --application-identifier {{a-9ZY8X7Wv6}} \
    --protocol WebRTC \
    --signal-request "{{[webrtc-ice-offer json string]}}" \
    --user-id {{myUserId}} \
    --role-arn arn:aws:iam::{{123456789012}}:role/GameLiftStreams-{{MyAppRole}}
```

如果無法擔任角色 （例如，因為信任政策設定錯誤）， 會`StartStreamSession`傳回 `ValidationException`。工作階段不會啟動。如需詳細資訊，請參閱[對工作階段登入資料進行故障診斷](session-credentials-troubleshooting.md)。