UNPKG

@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
"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