

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Step Functions の他の AWS アカウント のリソースへのアクセス
<a name="concepts-access-cross-acct-resources"></a>

Step Functions は、ワークフロー AWS アカウント のさまざまな で設定されたリソースへのクロスアカウントアクセスを提供します。Step Functions サービス統合を使用すると、 が AWS リソースベースのポリシーまたはクロスアカウント呼び出しをサポート AWS のサービス していない場合でも、任意のクロスアカウントリソースを呼び出すことができます。

たとえば、開発とテストという AWS アカウント 2 つの を同じ に所有しているとします AWS リージョン。クロスアカウントアクセスを使用すると、「Development」アカウントのワークフローは、「Testing」アカウントで使用可能な Amazon S3 バケット、Amazon DynamoDB テーブル、Lambda 関数などのリソースにアクセスできます。

**重要**  
IAM ロールとリソースベースのポリシーは、単一のパーティション内のアカウント間でのみアクセスを委任します。例えば、標準 `aws` パーティションの米国西部 (北カリフォルニア)と、`aws-cn` パーティションの中国 (北京) にアカウントがあるとします。中国 (北京) アカウントの Amazon S3 リソースベースのポリシーを使用して、標準 `aws` アカウントのユーザーにアクセスを許可することはできません。

クロスアカウントアクセスの詳細については、「*IAM ユーザーガイド*」の「[クロスアカウントポリシーの評価論理](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html)」を参照してください。

各 AWS アカウント は独自のリソースを完全に制御しますが、Step Functions を使用すると、コードをカスタマイズすることなくワークフロー内のステップを再編成、スワップ、追加、または削除できます。これは、プロセスが変わったりアプリケーションが進化したりしても可能です。

また、ネストしたステートマシンの実行を呼び出して、さまざまなアカウントで利用可能にすることもできます。これにより、ワークフローを効率的に分離して切り離すことができます。異なるアカウントの別の Step Functions ワークフローにアクセスするワークフローの中で、[`.sync`](connect-to-resource.md#connect-sync) サービス統合パターンを使用する場合、Step Functions のポーリングは自身の割り当てクオータを消費します。詳細については、「[ジョブの実行 (.sync)](connect-to-resource.md#connect-sync)」を参照してください。

**注記**  
クロスリージョン AWS SDK 統合とクロスリージョン AWS リソースアクセスは、Step Functions では使用できません。

## クロスアカウントの主なリソースの概念
<a name="key-terms-cross-acct-access"></a>

**[実行ロール](procedure-create-iam-role.md)**  
Step Functions がコードを実行し、 AWS Lambda 関数の呼び出しアクションなどの AWS リソースにアクセスするために使用する IAM ロール。

**[サービス統合](integrate-services.md)**  
ワークフロー`Task`の状態内から呼び出すことができる AWS SDK 統合 API アクション。

**ソースアカウント**  
ステートマシン AWS アカウント を所有し、実行を開始した 。

**ターゲットアカウント**  
クロスアカウント呼び出しを行う AWS アカウント 。

**ターゲットロール**  
ターゲットアカウントが所有するリソースへの呼び出しを行う際に、ステートマシンが引き受けるターゲットアカウントの IAM ロール

**[ジョブの実行 (.sync)](connect-to-resource.md#connect-sync)**  
などの サービスを呼び出すために使用されるサービス統合パターン AWS Batch。またこれにより、 Step Functions のステートマシンはジョブの完了まで待機してから次の状態に進みます。Step Functions の待機を指示するには、`Task` 状態の `Resource` フィールドに `.sync` サフィックスを追加します。

## クロスアカウントリソースの呼び出し
<a name="invoke-cross-acct-resource"></a>

ワークフローで、クロスアカウントリソースを呼び出すには次の操作を行います。

1. リソースを含むターゲットアカウントに IAM ロールを作成します。このロールは、ステートマシンを含むソースアカウントに、ターゲットアカウントのリソースにアクセスするアクセス許可を付与します。

1. `Task` ステートの定義で、クロスアカウントリソースを呼び出す前にステートマシンが引き受けるターゲット IAM ロールを指定します。

1. ターゲット IAM ロールの信頼ポリシーを変更して、ソースアカウントがこのロールを一時的に引き受けることができるようにします。信頼ポリシーには、ソースアカウントで定義したステートマシンの Amazon リソースネーム (ARN) を含める必要があります。また、 AWS リソースを呼び出すための適切なアクセス許可をターゲット IAM ロールに定義します。

1. ソースアカウントの実行ロールを更新して、ターゲット IAM ロールを引き受けるのに必要なアクセス許可を含めます。

例として、チュートリアルの「[Step Functions でのクロスアカウント AWS リソースへのアクセス](tutorial-access-cross-acct-resources.md)」を参照してください。

**注記**  
複数の AWS アカウントからリソースにアクセスするための IAM ロールを引き受けるようにステートマシンを設定できます。ただし、ステートマシンが一度に引き受けられる IAM ロールは、1 つだけです。

![\[クロスアカウントリソースへのアクセス概念図\]](http://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/images/cross-account-support-concept.png)


## .sync 統合パターンへのクロスアカウントアクセス
<a name="concepts-cross-acct-sync-pattern"></a>

ワークフローで `.sync` サービス統合パターンを使用すると、Step Functions は呼び出されたクロスアカウントリソースをポーリングして、タスクの完了を確認します。これにより、実際のタスク完了時間と Step Functions がタスク完了を認識する時間との間に若干の遅延が生じます。このポーリングループを完了させるには、ターゲットの IAM ロールが `.sync` の呼び出しに必要な許可を持つ必要があります。これを行うには、ターゲットの IAM ロールの信頼ポリシーで、ソースアカウントによる引き受けを許可する必要があります。さらに、ターゲットの IAM ロールにはポーリングループを完了させるための許可が必要です。

**注記**  
現在、`arn:aws:states:::states:startExecution.sync` はネストされた Express ワークフローをサポートしていません。代わりに `arn:aws:states:::aws-sdk:sfn:startSyncExecution` を使用します。

### .sync 呼び出しのための信頼ポリシーの更新
<a name="cross-acct-sync-pattern-policy-update"></a>

次の例に示すように、ターゲットの IAM ロールの信頼ポリシーを更新します。`sts:ExternalId` フィールドでは、ロールを引き受けられるユーザーをさらに制御できます。ステートマシンの名前には、API が AWS Security Token Service `AssumeRole`サポートする文字のみを含める必要があります。詳細については、「*AWS Security Token Service API リファレンス*」の「[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)」を参照してください。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Principal": {
        "AWS": "arn:aws:iam::sourceAccountID:role/InvokeRole",
      },
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "arn:aws:states:us-east-2:sourceAccountID:stateMachine:stateMachineName"
        }
      }
    }
  ]
}
```

### .sync 呼び出しに必要な許可
<a name="cross-acct-sync-pattern-perms-update"></a>

ステートマシンに必要な許可を付与するには、ターゲット IAM ロールの必要な許可を更新します。詳細については、「[Step Functions が統合サービスの IAM ポリシーを生成する方法](service-integration-iam-templates.md)」を参照してください。例えばステートマシンを起動するには、以下の許可を追加します。

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "states:StartExecution"
      ],
      "Resource": [
        "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "states:DescribeExecution",
        "states:StopExecution"
      ],
      "Resource": [
        "arn:aws:states:us-east-1:123456789012:execution:myStateMachineName:*"
      ]
    }
  ]
}
```