@pulumi/aws-native
Version:
The Pulumi AWS Cloud Control Provider enables you to build, deploy, and manage [any AWS resource that's supported by the AWS Cloud Control API](https://github.com/pulumi/pulumi-aws-native/blob/master/provider/cmd/pulumi-gen-aws-native/supported-types.txt)
620 lines • 25.5 kB
JavaScript
"use strict";
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
Object.defineProperty(exports, "__esModule", { value: true });
exports.Bucket = void 0;
const pulumi = require("@pulumi/pulumi");
const utilities = require("../utilities");
/**
* The ``AWS::S3::Bucket`` resource creates an Amazon S3 bucket in the same AWS Region where you create the AWS CloudFormation stack.
* To control how AWS CloudFormation handles the bucket when the stack is deleted, you can set a deletion policy for your bucket. You can choose to *retain* the bucket or to *delete* the bucket. For more information, see [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html).
* You can only delete empty buckets. Deletion fails for buckets that have contents.
*
* ## Example Usage
* ### Example
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws_native from "@pulumi/aws-native";
*
* const s3Bucket = new aws_native.s3.Bucket("s3Bucket", {});
* const recordingConfiguration = new aws_native.ivs.RecordingConfiguration("recordingConfiguration", {
* name: "MyRecordingConfiguration",
* destinationConfiguration: {
* s3: {
* bucketName: s3Bucket.id,
* },
* },
* thumbnailConfiguration: {
* recordingMode: aws_native.ivs.RecordingConfigurationThumbnailConfigurationRecordingMode.Interval,
* targetIntervalSeconds: 60,
* storage: [
* aws_native.ivs.RecordingConfigurationThumbnailConfigurationStorageItem.Sequential,
* aws_native.ivs.RecordingConfigurationThumbnailConfigurationStorageItem.Latest,
* ],
* resolution: aws_native.ivs.RecordingConfigurationThumbnailConfigurationResolution.Hd,
* },
* renditionConfiguration: {
* renditionSelection: aws_native.ivs.RecordingConfigurationRenditionConfigurationRenditionSelection.Custom,
* renditions: [
* aws_native.ivs.RecordingConfigurationRenditionConfigurationRenditionsItem.Hd,
* aws_native.ivs.RecordingConfigurationRenditionConfigurationRenditionsItem.Sd,
* ],
* },
* }, {
* dependsOn: [s3Bucket],
* });
* const channel = new aws_native.ivs.Channel("channel", {
* name: "MyRecordedChannel",
* recordingConfigurationArn: recordingConfiguration.id,
* }, {
* dependsOn: [recordingConfiguration],
* });
*
* ```
* ### Example
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws_native from "@pulumi/aws-native";
*
* const s3Bucket = new aws_native.s3.Bucket("s3Bucket", {});
* const recordingConfiguration = new aws_native.ivs.RecordingConfiguration("recordingConfiguration", {
* name: "MyRecordingConfiguration",
* destinationConfiguration: {
* s3: {
* bucketName: s3Bucket.id,
* },
* },
* thumbnailConfiguration: {
* recordingMode: aws_native.ivs.RecordingConfigurationThumbnailConfigurationRecordingMode.Interval,
* targetIntervalSeconds: 60,
* resolution: aws_native.ivs.RecordingConfigurationThumbnailConfigurationResolution.Hd,
* storage: [
* aws_native.ivs.RecordingConfigurationThumbnailConfigurationStorageItem.Sequential,
* aws_native.ivs.RecordingConfigurationThumbnailConfigurationStorageItem.Latest,
* ],
* },
* renditionConfiguration: {
* renditionSelection: aws_native.ivs.RecordingConfigurationRenditionConfigurationRenditionSelection.Custom,
* renditions: [
* aws_native.ivs.RecordingConfigurationRenditionConfigurationRenditionsItem.Hd,
* aws_native.ivs.RecordingConfigurationRenditionConfigurationRenditionsItem.Sd,
* ],
* },
* }, {
* dependsOn: [s3Bucket],
* });
* const channel = new aws_native.ivs.Channel("channel", {
* name: "MyRecordedChannel",
* recordingConfigurationArn: recordingConfiguration.id,
* }, {
* dependsOn: [recordingConfiguration],
* });
*
* ```
* ### Example
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws_native from "@pulumi/aws-native";
*
* const config = new pulumi.Config();
* const latestAmiId = config.get("latestAmiId") || "";
* const latestAmiIdValue = latestAmiId == "" ? "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" : aws_native.getSsmParameterString({
* name: latestAmiId,
* }).then(invoke => invoke.value);
* const gitHubOwner = config.require("gitHubOwner");
* const gitHubRepo = config.require("gitHubRepo");
* const gitHubBranch = config.require("gitHubBranch");
* const ssmAssocLogs = new aws_native.s3.Bucket("ssmAssocLogs", {});
* const ssmInstanceRole = new aws_native.iam.Role("ssmInstanceRole", {
* policies: [
* {
* policyDocument: {
* version: "2012-10-17",
* statement: [{
* action: ["s3:GetObject"],
* resource: [
* "arn:aws:s3:::aws-ssm-${AWS::Region}/*",
* "arn:aws:s3:::aws-windows-downloads-${AWS::Region}/*",
* "arn:aws:s3:::amazon-ssm-${AWS::Region}/*",
* "arn:aws:s3:::amazon-ssm-packages-${AWS::Region}/*",
* "arn:aws:s3:::${AWS::Region}-birdwatcher-prod/*",
* "arn:aws:s3:::patch-baseline-snapshot-${AWS::Region}/*",
* ],
* effect: "Allow",
* }],
* },
* policyName: "ssm-custom-s3-policy",
* },
* {
* policyDocument: {
* version: "2012-10-17",
* statement: [{
* action: [
* "s3:GetObject",
* "s3:PutObject",
* "s3:PutObjectAcl",
* "s3:ListBucket",
* ],
* resource: [
* "arn:${AWS::Partition}:s3:::${SSMAssocLogs}/*",
* "arn:${AWS::Partition}:s3:::${SSMAssocLogs}",
* ],
* effect: "Allow",
* }],
* },
* policyName: "s3-instance-bucket-policy",
* },
* ],
* path: "/",
* managedPolicyArns: ["arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore"],
* assumeRolePolicyDocument: {
* version: "2012-10-17",
* statement: [{
* effect: "Allow",
* principal: {
* service: [
* "ec2.amazonaws.com",
* "ssm.amazonaws.com",
* ],
* },
* action: "sts:AssumeRole",
* }],
* },
* });
* const ssmInstanceProfile = new aws_native.iam.InstanceProfile("ssmInstanceProfile", {roles: ["SSMInstanceRole"]});
* const ec2Instance = new aws_native.ec2.Instance("ec2Instance", {
* imageId: "LatestAmiId",
* instanceType: "t3.small",
* iamInstanceProfile: "SSMInstanceProfile",
* });
* const ansibleAssociation = new aws_native.ssm.Association("ansibleAssociation", {
* name: "AWS-ApplyAnsiblePlaybooks",
* targets: [{
* key: "InstanceIds",
* values: ["EC2Instance"],
* }],
* outputLocation: {
* s3Location: {
* outputS3BucketName: "SSMAssocLogs",
* outputS3KeyPrefix: "logs/",
* },
* },
* parameters: {
* sourceType: ["GitHub"],
* sourceInfo: [`{"owner":"\${GitHubOwner}",
* "repository":"\${GitHubRepo}",
* "path":"",
* "getOptions":"branch:\${GitHubBranch}"}
* `],
* installDependencies: ["True"],
* playbookFile: ["playbook.yml"],
* extraVariables: ["SSM=True"],
* check: ["False"],
* verbose: ["-v"],
* },
* });
* export const webServerPublic = "EC2Instance.PublicDnsName";
*
* ```
* ### Example
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws_native from "@pulumi/aws-native";
*
* const config = new pulumi.Config();
* const latestAmiId = config.get("latestAmiId") || "";
* const latestAmiIdValue = latestAmiId == "" ? "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" : aws_native.getSsmParameterString({
* name: latestAmiId,
* }).then(invoke => invoke.value);
* const ssmAssocLogs = new aws_native.s3.Bucket("ssmAssocLogs", {});
* const ssmInstanceRole = new aws_native.iam.Role("ssmInstanceRole", {
* policies: [
* {
* policyDocument: {
* version: "2012-10-17",
* statement: [{
* action: ["s3:GetObject"],
* resource: [
* "arn:aws:s3:::aws-ssm-${AWS::Region}/*",
* "arn:aws:s3:::aws-windows-downloads-${AWS::Region}/*",
* "arn:aws:s3:::amazon-ssm-${AWS::Region}/*",
* "arn:aws:s3:::amazon-ssm-packages-${AWS::Region}/*",
* "arn:aws:s3:::${AWS::Region}-birdwatcher-prod/*",
* "arn:aws:s3:::patch-baseline-snapshot-${AWS::Region}/*",
* ],
* effect: "Allow",
* }],
* },
* policyName: "ssm-custom-s3-policy",
* },
* {
* policyDocument: {
* version: "2012-10-17",
* statement: [{
* action: [
* "s3:GetObject",
* "s3:PutObject",
* "s3:PutObjectAcl",
* "s3:ListBucket",
* ],
* resource: [
* "arn:${AWS::Partition}:s3:::${SSMAssocLogs}/*",
* "arn:${AWS::Partition}:s3:::${SSMAssocLogs}",
* ],
* effect: "Allow",
* }],
* },
* policyName: "s3-instance-bucket-policy",
* },
* ],
* path: "/",
* managedPolicyArns: [
* "arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore",
* "arn:${AWS::Partition}:iam::aws:policy/CloudWatchAgentServerPolicy",
* ],
* assumeRolePolicyDocument: {
* version: "2012-10-17",
* statement: [{
* effect: "Allow",
* principal: {
* service: [
* "ec2.amazonaws.com",
* "ssm.amazonaws.com",
* ],
* },
* action: "sts:AssumeRole",
* }],
* },
* });
* const ssmInstanceProfile = new aws_native.iam.InstanceProfile("ssmInstanceProfile", {roles: ["SSMInstanceRole"]});
* const ec2Instance = new aws_native.ec2.Instance("ec2Instance", {
* imageId: "LatestAmiId",
* instanceType: "t3.medium",
* iamInstanceProfile: "SSMInstanceProfile",
* tags: [{
* key: "nginx",
* value: "yes",
* }],
* });
* const nginxAssociation = new aws_native.ssm.Association("nginxAssociation", {
* name: "AWS-RunShellScript",
* targets: [{
* key: "tag:nginx",
* values: ["yes"],
* }],
* outputLocation: {
* s3Location: {
* outputS3BucketName: "SSMAssocLogs",
* outputS3KeyPrefix: "logs/",
* },
* },
* parameters: {
* commands: [`sudo amazon-linux-extras install nginx1 -y
* sudo service nginx start
* `],
* },
* }, {
* dependsOn: [ec2Instance],
* });
* export const webServerPublic = "EC2Instance.PublicDnsName";
*
* ```
* ### Example
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws_native from "@pulumi/aws-native";
*
* const config = new pulumi.Config();
* const latestAmiId = config.get("latestAmiId") || "";
* const latestAmiIdValue = latestAmiId == "" ? "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" : aws_native.getSsmParameterString({
* name: latestAmiId,
* }).then(invoke => invoke.value);
* const ssmAssocLogs = new aws_native.s3.Bucket("ssmAssocLogs", {});
* const nginxInstallAutomation = new aws_native.ssm.Document("nginxInstallAutomation", {
* documentType: aws_native.ssm.DocumentType.Automation,
* content: {
* schemaVersion: "0.3",
* description: "Updates AMI with Linux distribution packages and installs Nginx software",
* assumeRole: "{{AutomationAssumeRole}}",
* parameters: {
* instanceId: {
* description: "ID of the Instance.",
* type: "String",
* },
* automationAssumeRole: {
* "default": "",
* description: "(Optional) The ARN of the role that allows Automation to perform the actions on your behalf.",
* type: "String",
* },
* },
* mainSteps: [
* {
* name: "updateOSSoftware",
* action: "aws:runCommand",
* maxAttempts: 3,
* timeoutSeconds: 3600,
* inputs: {
* documentName: "AWS-RunShellScript",
* instanceIds: ["{{InstanceId}}"],
* cloudWatchOutputConfig: {
* cloudWatchOutputEnabled: "true",
* },
* parameters: {
* commands: [`#!/bin/bash
* sudo yum update -y
* needs-restarting -r
* if [ ? -eq 1 ]
* then
* exit 194
* else
* exit 0
* fi
* `],
* },
* },
* },
* {
* name: "InstallNginx",
* action: "aws:runCommand",
* inputs: {
* documentName: "AWS-RunShellScript",
* instanceIds: ["{{InstanceId}}"],
* cloudWatchOutputConfig: {
* cloudWatchOutputEnabled: "true",
* },
* parameters: {
* commands: [`sudo amazon-linux-extras install nginx1 -y
* sudo service nginx start
* `],
* },
* },
* },
* {
* name: "TestInstall",
* action: "aws:runCommand",
* maxAttempts: 3,
* timeoutSeconds: 3600,
* onFailure: "Abort",
* inputs: {
* documentName: "AWS-RunShellScript",
* instanceIds: ["{{InstanceId}}"],
* parameters: {
* commands: ["curl localhost\n"],
* },
* },
* },
* ],
* },
* });
* const ssmExecutionRole = new aws_native.iam.Role("ssmExecutionRole", {
* policies: [{
* policyDocument: {
* version: "2012-10-17",
* statement: [{
* action: [
* "ssm:StartAssociationsOnce",
* "ssm:CreateAssociation",
* "ssm:CreateAssociationBatch",
* "ssm:UpdateAssociation",
* ],
* resource: "*",
* effect: "Allow",
* }],
* },
* policyName: "ssm-association",
* }],
* path: "/",
* managedPolicyArns: ["arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonSSMAutomationRole"],
* assumeRolePolicyDocument: {
* version: "2012-10-17",
* statement: [{
* effect: "Allow",
* principal: {
* service: [
* "ec2.amazonaws.com",
* "ssm.amazonaws.com",
* ],
* },
* action: "sts:AssumeRole",
* }],
* },
* });
* const ssmInstanceRole = new aws_native.iam.Role("ssmInstanceRole", {
* policies: [
* {
* policyDocument: {
* version: "2012-10-17",
* statement: [{
* action: ["s3:GetObject"],
* resource: [
* "arn:aws:s3:::aws-ssm-${AWS::Region}/*",
* "arn:aws:s3:::aws-windows-downloads-${AWS::Region}/*",
* "arn:aws:s3:::amazon-ssm-${AWS::Region}/*",
* "arn:aws:s3:::amazon-ssm-packages-${AWS::Region}/*",
* "arn:aws:s3:::${AWS::Region}-birdwatcher-prod/*",
* "arn:aws:s3:::patch-baseline-snapshot-${AWS::Region}/*",
* ],
* effect: "Allow",
* }],
* },
* policyName: "ssm-custom-s3-policy",
* },
* {
* policyDocument: {
* version: "2012-10-17",
* statement: [{
* action: [
* "s3:GetObject",
* "s3:PutObject",
* "s3:PutObjectAcl",
* "s3:ListBucket",
* ],
* resource: [
* "arn:${AWS::Partition}:s3:::${SSMAssocLogs}/*",
* "arn:${AWS::Partition}:s3:::${SSMAssocLogs}",
* ],
* effect: "Allow",
* }],
* },
* policyName: "s3-instance-bucket-policy",
* },
* ],
* path: "/",
* managedPolicyArns: [
* "arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore",
* "arn:${AWS::Partition}:iam::aws:policy/CloudWatchAgentServerPolicy",
* ],
* assumeRolePolicyDocument: {
* version: "2012-10-17",
* statement: [{
* effect: "Allow",
* principal: {
* service: [
* "ec2.amazonaws.com",
* "ssm.amazonaws.com",
* ],
* },
* action: "sts:AssumeRole",
* }],
* },
* });
* const ssmInstanceProfile = new aws_native.iam.InstanceProfile("ssmInstanceProfile", {roles: ["SSMInstanceRole"]});
* const ec2Instance = new aws_native.ec2.Instance("ec2Instance", {
* imageId: "LatestAmiId",
* instanceType: "t3.medium",
* iamInstanceProfile: "SSMInstanceProfile",
* tags: [{
* key: "nginx",
* value: "true",
* }],
* });
* const nginxAssociation = new aws_native.ssm.Association("nginxAssociation", {
* name: "nginxInstallAutomation",
* outputLocation: {
* s3Location: {
* outputS3BucketName: "SSMAssocLogs",
* outputS3KeyPrefix: "logs/",
* },
* },
* automationTargetParameterName: "InstanceId",
* parameters: {
* automationAssumeRole: ["SSMExecutionRole.Arn"],
* },
* targets: [{
* key: "tag:nginx",
* values: ["true"],
* }],
* }, {
* dependsOn: [ec2Instance],
* });
* export const webServerPublic = "EC2Instance.PublicDnsName";
*
* ```
*/
class Bucket extends pulumi.CustomResource {
/**
* Get an existing Bucket resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name, id, opts) {
return new Bucket(name, undefined, { ...opts, id: id });
}
/**
* Returns true if the given object is an instance of Bucket. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj) {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === Bucket.__pulumiType;
}
/**
* Create a Bucket resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name, args, opts) {
let resourceInputs = {};
opts = opts || {};
if (!opts.id) {
resourceInputs["abacStatus"] = args?.abacStatus;
resourceInputs["accelerateConfiguration"] = args?.accelerateConfiguration;
resourceInputs["accessControl"] = args?.accessControl;
resourceInputs["analyticsConfigurations"] = args?.analyticsConfigurations;
resourceInputs["bucketEncryption"] = args?.bucketEncryption;
resourceInputs["bucketName"] = args?.bucketName;
resourceInputs["corsConfiguration"] = args?.corsConfiguration;
resourceInputs["intelligentTieringConfigurations"] = args?.intelligentTieringConfigurations;
resourceInputs["inventoryConfigurations"] = args?.inventoryConfigurations;
resourceInputs["lifecycleConfiguration"] = args?.lifecycleConfiguration;
resourceInputs["loggingConfiguration"] = args?.loggingConfiguration;
resourceInputs["metadataConfiguration"] = args?.metadataConfiguration;
resourceInputs["metadataTableConfiguration"] = args?.metadataTableConfiguration;
resourceInputs["metricsConfigurations"] = args?.metricsConfigurations;
resourceInputs["notificationConfiguration"] = args?.notificationConfiguration;
resourceInputs["objectLockConfiguration"] = args?.objectLockConfiguration;
resourceInputs["objectLockEnabled"] = args?.objectLockEnabled;
resourceInputs["ownershipControls"] = args?.ownershipControls;
resourceInputs["publicAccessBlockConfiguration"] = args?.publicAccessBlockConfiguration;
resourceInputs["replicationConfiguration"] = args?.replicationConfiguration;
resourceInputs["tags"] = args?.tags;
resourceInputs["versioningConfiguration"] = args?.versioningConfiguration;
resourceInputs["websiteConfiguration"] = args?.websiteConfiguration;
resourceInputs["arn"] = undefined /*out*/;
resourceInputs["domainName"] = undefined /*out*/;
resourceInputs["dualStackDomainName"] = undefined /*out*/;
resourceInputs["regionalDomainName"] = undefined /*out*/;
resourceInputs["websiteUrl"] = undefined /*out*/;
}
else {
resourceInputs["abacStatus"] = undefined /*out*/;
resourceInputs["accelerateConfiguration"] = undefined /*out*/;
resourceInputs["accessControl"] = undefined /*out*/;
resourceInputs["analyticsConfigurations"] = undefined /*out*/;
resourceInputs["arn"] = undefined /*out*/;
resourceInputs["bucketEncryption"] = undefined /*out*/;
resourceInputs["bucketName"] = undefined /*out*/;
resourceInputs["corsConfiguration"] = undefined /*out*/;
resourceInputs["domainName"] = undefined /*out*/;
resourceInputs["dualStackDomainName"] = undefined /*out*/;
resourceInputs["intelligentTieringConfigurations"] = undefined /*out*/;
resourceInputs["inventoryConfigurations"] = undefined /*out*/;
resourceInputs["lifecycleConfiguration"] = undefined /*out*/;
resourceInputs["loggingConfiguration"] = undefined /*out*/;
resourceInputs["metadataConfiguration"] = undefined /*out*/;
resourceInputs["metadataTableConfiguration"] = undefined /*out*/;
resourceInputs["metricsConfigurations"] = undefined /*out*/;
resourceInputs["notificationConfiguration"] = undefined /*out*/;
resourceInputs["objectLockConfiguration"] = undefined /*out*/;
resourceInputs["objectLockEnabled"] = undefined /*out*/;
resourceInputs["ownershipControls"] = undefined /*out*/;
resourceInputs["publicAccessBlockConfiguration"] = undefined /*out*/;
resourceInputs["regionalDomainName"] = undefined /*out*/;
resourceInputs["replicationConfiguration"] = undefined /*out*/;
resourceInputs["tags"] = undefined /*out*/;
resourceInputs["versioningConfiguration"] = undefined /*out*/;
resourceInputs["websiteConfiguration"] = undefined /*out*/;
resourceInputs["websiteUrl"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const replaceOnChanges = { replaceOnChanges: ["bucketName"] };
opts = pulumi.mergeOptions(opts, replaceOnChanges);
super(Bucket.__pulumiType, name, resourceInputs, opts);
}
}
exports.Bucket = Bucket;
/** @internal */
Bucket.__pulumiType = 'aws-native:s3:Bucket';
//# sourceMappingURL=bucket.js.map