PutDestination
Creates or updates a destination. This operation is used only to create destinations for cross-account subscriptions.
A destination encapsulates a physical resource (such as an Amazon Kinesis stream). With a destination, you can subscribe to a real-time stream of log events for a different account, ingested using PutLogEvents.
Through an access policy, a destination controls what is written to it.
By default, PutDestination
does not set any access policy with the destination,
which means a cross-account user cannot call PutSubscriptionFilter against
this destination. To enable this, the destination owner must call PutDestinationPolicy after PutDestination
.
To perform a PutDestination
operation, you must also have the
iam:PassRole
permission.
Request Syntax
{
"destinationName": "string
",
"roleArn": "string
",
"tags": {
"string
" : "string
"
},
"targetArn": "string
"
}
Request Parameters
For information about the parameters that are common to all actions, see Common Parameters.
The request accepts the following data in JSON format.
- destinationName
-
A name for the destination.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 512.
Pattern:
[^:*]*
Required: Yes
- roleArn
-
The ARN of an IAM role that grants CloudWatch Logs permissions to call the Amazon Kinesis
PutRecord
operation on the destination stream.Type: String
Length Constraints: Minimum length of 1.
Required: Yes
-
An optional list of key-value pairs to associate with the resource.
For more information about tagging, see Tagging AWS resources
Type: String to string map
Map Entries: Maximum number of 50 items.
Key Length Constraints: Minimum length of 1. Maximum length of 128.
Key Pattern:
^([\p{L}\p{Z}\p{N}_.:/=+\-@]+)$
Value Length Constraints: Maximum length of 256.
Value Pattern:
^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$
Required: No
- targetArn
-
The ARN of an Amazon Kinesis stream to which to deliver matching log events.
Type: String
Length Constraints: Minimum length of 1.
Required: Yes
Response Syntax
{
"destination": {
"accessPolicy": "string",
"arn": "string",
"creationTime": number,
"destinationName": "string",
"roleArn": "string",
"targetArn": "string"
}
}
Response Elements
If the action is successful, the service sends back an HTTP 200 response.
The following data is returned in JSON format by the service.
- destination
-
The destination.
Type: Destination object
Errors
For information about the errors that are common to all actions, see Common Errors.
- InvalidParameterException
-
A parameter is specified incorrectly.
HTTP Status Code: 400
- OperationAbortedException
-
Multiple concurrent requests to update the same resource were in conflict.
HTTP Status Code: 400
- ServiceUnavailableException
-
The service cannot complete the request.
HTTP Status Code: 500
Examples
To create or update a destination
The following example creates the specified destination.
Sample Request
POST / HTTP/1.1
Host: logs.<region>.<domain>
X-Amz-Date: <DATE>
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=content-type;date;host;user-agent;x-amz-date;x-amz-target;x-amzn-requestid, Signature=<Signature>
User-Agent: <UserAgentString>
Accept: application/json
Content-Type: application/x-amz-json-1.1
Content-Length: <PayloadSizeBytes>
Connection: Keep-Alive
X-Amz-Target: Logs_20140328.PutDestination
{
"destinationName": "my-destination",
"targetArn": "arn:aws:kinesis:us-east-1:123456789012:stream/my-kinesis-stream",
"roleArn": "arn:aws:iam::123456789012:role/my-subscription-role"
}
Sample Response
HTTP/1.1 200 OK
x-amzn-RequestId: <RequestId>
Content-Type: application/x-amz-json-1.1
Content-Length: <PayloadSizeBytes>
Date: <Date>
{
"destination": [
{
"destinationName": "my-destination",
"targetArn": "arn:aws:kinesis:us-east-1:123456789012:stream/my-kinesis-stream",
"roleArn": "arn:aws:iam::123456789012:role/my-subscription-role",
"arn": "arn:aws:logs:us-east-1:123456789012:destination:my-destination",
"creationTime": 1437584472382
}
]
}
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the following: