Manages a CloudWatch Observability Admin S3 Table Integration. This integration enables CloudWatch to duplicate telemetry data to Amazon S3 Tables, making it available for analysis by tools such as Amazon Athena and Amazon Redshift.
For more information, see the [CloudWatch Logs S3 Tables integration documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/s3-tables-integration.html).
## Example Usage
### Basic Integration with AES256 Encryption
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.iam.Role;
import com.pulumi.aws.iam.RoleArgs;
import com.pulumi.aws.iam.RolePolicy;
import com.pulumi.aws.iam.RolePolicyArgs;
import com.pulumi.aws.observabilityadmin.S3TableIntegration;
import com.pulumi.aws.observabilityadmin.S3TableIntegrationArgs;
import com.pulumi.aws.observabilityadmin.inputs.S3TableIntegrationEncryptionArgs;
import static com.pulumi.codegen.internal.Serialization.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new Role("example", RoleArgs.builder()
.name("example-s3-table-integration")
.assumeRolePolicy(serializeJson(
jsonObject(
jsonProperty("Version", "2012-10-17"),
jsonProperty("Statement", jsonArray(jsonObject(
jsonProperty("Action", "sts:AssumeRole"),
jsonProperty("Effect", "Allow"),
jsonProperty("Principal", jsonObject(
jsonProperty("Service", "logs.amazonaws.com")
))
)))
)))
.build());
var exampleRolePolicy = new RolePolicy("exampleRolePolicy", RolePolicyArgs.builder()
.role(example.name())
.policy(serializeJson(
jsonObject(
jsonProperty("Version", "2012-10-17"),
jsonProperty("Statement", jsonArray(jsonObject(
jsonProperty("Effect", "Allow"),
jsonProperty("Action", jsonArray(
"s3tables:CreateTableBucket",
"s3tables:ListTableBuckets",
"s3tables:GetTableBucket",
"s3tables:CreateNamespace",
"s3tables:GetNamespace",
"s3tables:ListNamespaces",
"s3tables:CreateTable",
"s3tables:GetTable",
"s3tables:ListTables",
"s3tables:PutTableData",
"s3tables:GetTableData"
)),
jsonProperty("Resource", "*")
)))
)))
.build());
var exampleS3TableIntegration = new S3TableIntegration("exampleS3TableIntegration", S3TableIntegrationArgs.builder()
.encryption(S3TableIntegrationEncryptionArgs.builder()
.sseAlgorithm("AES256")
.build())
.roleArn(example.arn())
.build());
}
}
### Integration with KMS Encryption
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.iam.Role;
import com.pulumi.aws.iam.RoleArgs;
import com.pulumi.aws.kms.Key;
import com.pulumi.aws.kms.KeyArgs;
import com.pulumi.aws.observabilityadmin.S3TableIntegration;
import com.pulumi.aws.observabilityadmin.S3TableIntegrationArgs;
import com.pulumi.aws.observabilityadmin.inputs.S3TableIntegrationEncryptionArgs;
import static com.pulumi.codegen.internal.Serialization.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new Role("example", RoleArgs.builder()
.name("example-s3-table-integration")
.assumeRolePolicy(serializeJson(
jsonObject(
jsonProperty("Version", "2012-10-17"),
jsonProperty("Statement", jsonArray(jsonObject(
jsonProperty("Action", "sts:AssumeRole"),
jsonProperty("Effect", "Allow"),
jsonProperty("Principal", jsonObject(
jsonProperty("Service", "logs.amazonaws.com")
))
)))
)))
.build());
var exampleKey = new Key("exampleKey", KeyArgs.builder()
.description("S3 Table Integration KMS key")
.deletionWindowInDays(7)
.build());
var exampleS3TableIntegration = new S3TableIntegration("exampleS3TableIntegration", S3TableIntegrationArgs.builder()
.encryption(S3TableIntegrationEncryptionArgs.builder()
.sseAlgorithm("aws:kms")
.kmsKeyArn(exampleKey.arn())
.build())
.roleArn(example.arn())
.build());
}
}
## Import
### Identity Schema
#### Required
- `arn` (String) ARN of the S3 Table integration.
Using `pulumi import`, import CloudWatch Observability Admin S3 Table Integrations using the `arn`. For example:
```sh
$ pulumi import aws:observabilityadmin/s3TableIntegration:S3TableIntegration example arn:aws:observabilityadmin:us-east-1:123456789012:s3-table-integration/example-id
```