# MessageAttributeDataType

The data type set for the SNS message attributes.

- Source: [`aws-stepfunctions-tasks/lib/sns/publish.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/aws-stepfunctions-tasks/lib/sns/publish.ts#L14)

## Example

```ts
const topic = new sns.Topic(this, 'Topic');

// Use a field from the execution data as message.
const task1 = new tasks.SnsPublish(this, 'Publish1', {
  topic,
  integrationPattern: sfn.IntegrationPattern.REQUEST_RESPONSE,
  message: sfn.TaskInput.fromDataAt('$.state.message'),
  messageAttributes: {
    place: {
      value: sfn.JsonPath.stringAt('$.place'),
    },
    pic: {
      // BINARY must be explicitly set
      dataType: tasks.MessageAttributeDataType.BINARY,
      value: sfn.JsonPath.stringAt('$.pic'),
    },
    people: {
      value: 4,
    },
    handles: {
      value: ['@kslater', '@jjf', null, '@mfanning'],
    },
  },
});

// Combine a field from the execution data with
// a literal object.
const task2 = new tasks.SnsPublish(this, 'Publish2', {
  topic,
  message: sfn.TaskInput.fromObject({
    field1: 'somedata',
    field2: sfn.JsonPath.stringAt('$.field2'),
  }),
});
```

## Members

| Member | Description |
| --- | --- |
| `STRING` | Strings are Unicode with UTF-8 binary encoding. |
| `STRING_ARRAY` | An array, formatted as a string. |
| `NUMBER` | Numbers are positive or negative integers or floating-point numbers. |
| `BINARY` | Binary type attributes can store any binary data. |

## Referenced by

- [`MessageAttribute`](/v2/docs/aws-cdk-lib.aws_stepfunctions_tasks.MessageAttribute).dataType
