

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

# Step Functions を使用して Amazon SNS トピックにメッセージを発行する
<a name="connect-sns"></a>

Step Functions を使用して Amazon SNS トピックにメッセージを発行する方法について説明します。このページでは、サポートされている Amazon SNS API アクションを一覧表示し、Amazon SNS にメッセージを公開するための `Task` 状態の例を示します。

Step Functions での AWSサービスとの統合については、[ サービスとの統合](integrate-services.md)「」および「」を参照してください[Step Functions でサービス API にパラメータを渡す](connect-parameters.md)。

**最適化された Amazon SNS 統合の主な機能**  
[レスポンスのリクエスト](connect-to-resource.md#connect-default) または [タスクトークンのコールバックまで待機する](connect-to-resource.md#connect-wait-token) 統合パターンに固有の最適化はありません。

以下には、Amazon Simple Notification Service (Amazon SNS) トピックに発行する `Task` 状態が含まれます。

```
{
 "StartAt": "Publish to SNS",
 "States": {
   "Publish to SNS": {
     "Type": "Task",
     "Resource": "arn:aws:states:::sns:publish",
     "Arguments": {
       "TopicArn": "arn:aws:sns:region:account-id:myTopic",
       "Message": "{% states.input.message %}",
       "MessageAttributes": {
         "my_attribute_no_1": {
           "DataType": "String",
           "StringValue": "value of my_attribute_no_1"
         },
         "my_attribute_no_2": {
           "DataType": "String",
           "StringValue": "value of my_attribute_no_2"
         }
       }
     },
     "End": true
    }
  }
}
```

**動的な値を渡す**。上記の例を変更して、この JSON ペイロードから属性を動的に渡すことができます。

```
{
  "message": "Hello world",
  "SNSDetails": {
    "attribute1": "some value",
    "attribute2": "some other value",
  }
}
```

次に示しているのは、`StringValue` フィールドに対して JSONata 式で値を設定する例です。

```
"MessageAttributes": {
  "my_attribute_no_1": {
      "DataType": "String",
      "StringValue": "{% $states.input.SNSDetails.attribute1 %}"
  },
  "my_attribute_no_2": {
      "DataType": "String",
      "StringValue": "{% $states.input.SNSDetails.attribute2 %}"
  }
```

以下には、Amazon SNS トピックに発行され、その後タスクトークンが返されるまで待機する `Task` 状態が含まれます。「[タスクトークンのコールバックまで待機する](connect-to-resource.md#connect-wait-token)」を参照してください。

```
{  
   "StartAt":"Send message to SNS",
   "States":{  
      "Send message to SNS":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::sns:publish.waitForTaskToken",
         "Arguments":{  
            "TopicArn":"arn:aws:sns:region:account-id:myTopic",
            "Message":{  
               "Input":"{% states.input.message %}",
               "TaskToken": "{% $states.context.Task.Token %}"
            }
         },
         "End":true
      }
   }
}
```

## 最適化された Amazon SNS API
<a name="connect-sns-api"></a>
+ [https://docs.aws.amazon.com/sns/latest/api/API_Publish.html](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)

**Step Functions のパラメータは PascalCase で表されます。**  
ネイティブサービス API が、API アクション `startSyncExecution` などの camelCase である場合でも、`StateMachineArn` などの PascalCase でパラメータを指定します。

**入力または結果データのクォータ**  
サービス間でデータを送受信する際、タスクの入力または結果の最大サイズは、UTF-8 でエンコードされた文字列で 256 KiB です。「[ステートマシンの実行に関連するクォータ](service-quotas.md#service-limits-state-machine-executions)」を参照してください。

## Amazon SNS を呼び出すための IAM ポリシー
<a name="sns-iam"></a>

次のサンプルテンプレートは、 がステートマシン定義のリソースに基づいて IAM ポリシーAWS Step Functionsを生成する方法を示しています。詳細については、「[Step Functions が統合サービスの IAM ポリシーを生成する方法](service-integration-iam-templates.md)」および「[Step Functions でサービス統合パターンを検出する](connect-to-resource.md)」を参照してください。

静的リソース**

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:us-east-1:123456789012:myTopicName"
            ]
        }
    ]
}
```

*パスに基づくリソース、または `TargetArn` か `PhoneNumber` に発行する*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "*"
        }
    ]
}
```