또 다른 IaC 도구 ...
21607 단어 typescriptiacpulumiaws
코드로서의 최신 인프라.
친숙한 프로그래밍 언어 및 도구를 사용하여 모든 클라우드에서 인프라 생성, 배포 및 관리
이 예에서는 Pulumi Crosswalk for AWS를 사용하여 액세스 권한이 있는 주제, 대기열 및 사용자를 쉽게 생성합니다. Pulumi Crosswalk for AWS는 잘 설계된 자동 모범 사례를 사용하여 AWS에서 일반적인 코드형 인프라 작업을 보다 쉽고 안전하게 만드는 라이브러리 모음입니다.
설치 스크립트를 실행하여 Linux에 Pulumi를 설치합니다.
curl -fsSL https://get.pulumi.com | sh
Node.js를 설치합니다.
sudo snap install node --classic
"pulumi_my" 프로젝트 생성:
mkdir pulumi_my && cd pulumi_my && pulumi new aws-typescript --emoji --generate-only
nano -c index.ts
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as awsx from "@pulumi/awsx";
// Create an AWS resource (IAM)
const mypolicy = new aws.iam.Policy("my_policy", {
name: "my_policy",
policy: JSON.stringify({
"Version": "2012-10-17",
"Statement": [
{
"Action": "sns:*",
"Effect": "Allow",
"Resource": "arn:aws:sns:my-region:my-account:my_topic"
},
{
"Action": "sqs:*",
"Effect": "Allow",
"Resource": "arn:aws:sqs:my-region:my-account:my_queue"
},
{
"Action": "sqs:*",
"Effect": "Allow",
"Resource": "arn:aws:sqs:my-region:my-account:my_queue_dlq"
}
]
})
});
const myuser = new aws.iam.User("my_user", {
name: "my_user",
});
const policyAttachment = new aws.iam.PolicyAttachment("my_policy_attachment", {
name: "my_policy_attachment",
users: [myuser],
policyArn: mypolicy.arn
});
// Create an AWS resource (SNS)
const myTopic = new aws.sns.Topic("my_topic", {
name: "my_topic",
deliveryPolicy: `{
"http": {
"defaultHealthyRetryPolicy": {
"numRetries": 3,
"numNoDelayRetries": 0,
"minDelayTarget": 20,
"maxDelayTarget": 20,
"numMinDelayRetries": 0,
"numMaxDelayRetries": 0,
"backoffFunction": "linear"
},
"disableSubscriptionOverrides": false
}
}
`,
kmsMasterKeyId: "alias/aws/sns",
tags: {
Environment: "myproduction",
},
});
// Create an AWS resource (SQS)
const myQueueDlq = new aws.sqs.Queue("my_queue_dlq", {
name: "my_queue_dlq",
delaySeconds: 90,
maxMessageSize: 2048,
messageRetentionSeconds: 86400,
receiveWaitTimeSeconds: 10,
policy: JSON.stringify({
"Version": "2012-10-17",
"Id": "arn:aws:sqs:my-region:my-account:my_queue_dlq/SQSDefaultPolicy",
"Statement": [
{
"Sid": "__owner_statement",
"Action": "sqs:*",
"Effect": "Allow",
"Resource": "arn:aws:sqs:my-region:my-account:my_queue_dlq",
"Principal": {
"AWS": [
"arn:aws:iam::my-account:user/my_user"
]
}
}
]
}),
tags: {
Environment: "myproduction",
},
}, { dependsOn: [myuser, mypolicy, policyAttachment] });
const myQueue = new aws.sqs.Queue("my_queue", {
name: "my_queue",
delaySeconds: 90,
maxMessageSize: 2048,
messageRetentionSeconds: 86400,
receiveWaitTimeSeconds: 10,
policy: JSON.stringify({
"Version": "2012-10-17",
"Id": "arn:aws:sqs:my-region:my-account:my_queue/SQSDefaultPolicy",
"Statement": [
{
"Sid": "__owner_statement",
"Action": "sqs:*",
"Effect": "Allow",
"Resource": "arn:aws:sqs:my-region:my-account:my_queue",
"Principal": {
"AWS": [
"arn:aws:iam::my-account:user/my_user"
]
}
}
]
}),
//redrivePolicy: "{\"deadLetterTargetArn\":\"arn:aws:sqs:my-region:my-account:my_queue_dlq\",\"maxReceiveCount\":\"4\"}",
tags: {
Environment: "myproduction",
},
}, { dependsOn: [myuser, mypolicy, policyAttachment, myQueueDlq] });
export const iamUserName = myuser.id;
export const iamAccesskeyID = myAccessKey.id;
export const iamAccesskeySecret = myAccessKey.sesSmtpPasswordV4;
export const arnPolicy = mypolicy.id;
export const arnTopic = myTopic.id;
export const urlQueueDlq = myQueueDlq.id;
export const urlQueue = myQueue.id;
"my-region" 및 "my-account" 변경
"my-region"을 원하는 지역으로 바꿉니다. 예를 들어 "us-east-2"(일명 "Ohio")를 사용하려는 경우 다음과 같이 표시됩니다.
sed -i "s/"my-region"/"us-east-2"/g" index.ts
예를 들어 "5555-5555-5555"인 경우 "my-account"를 "-"가 없는 AWS 계정 ID로 바꾸면 아래와 같습니다.
sed -i "s/"my-account"/"555555555555"/g" index.ts
초기 배포를 수행하고 다음 명령을 실행합니다.
npm install
pulumi stack init
"pulumi_my" 프로젝트 검토
pulumi preview
AWS_PROFILE 설정:
pulumi config set aws:profile my-profile
AWS_REGION 설정:
pulumi config set aws:region us-east-2
스택 배포
pulumi up
"pulumi_my" 프로젝트 파괴
pulumi destroy
스택에서 "pulumi_my" 프로젝트 제거
pulumi stack rm dev
원천:
https://www.pulumi.com/docs/get-started/
https://www.pulumi.com/docs/guides/crosswalk/aws/
https://www.pulumi.com/docs/reference/pkg/
https://www.pulumi.com/docs/intro/concepts/state/
Reference
이 문제에 관하여(또 다른 IaC 도구 ...), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/smashse/another-iac-tool-408b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
curl -fsSL https://get.pulumi.com | sh
sudo snap install node --classic
mkdir pulumi_my && cd pulumi_my && pulumi new aws-typescript --emoji --generate-only
nano -c index.ts
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as awsx from "@pulumi/awsx";
// Create an AWS resource (IAM)
const mypolicy = new aws.iam.Policy("my_policy", {
name: "my_policy",
policy: JSON.stringify({
"Version": "2012-10-17",
"Statement": [
{
"Action": "sns:*",
"Effect": "Allow",
"Resource": "arn:aws:sns:my-region:my-account:my_topic"
},
{
"Action": "sqs:*",
"Effect": "Allow",
"Resource": "arn:aws:sqs:my-region:my-account:my_queue"
},
{
"Action": "sqs:*",
"Effect": "Allow",
"Resource": "arn:aws:sqs:my-region:my-account:my_queue_dlq"
}
]
})
});
const myuser = new aws.iam.User("my_user", {
name: "my_user",
});
const policyAttachment = new aws.iam.PolicyAttachment("my_policy_attachment", {
name: "my_policy_attachment",
users: [myuser],
policyArn: mypolicy.arn
});
// Create an AWS resource (SNS)
const myTopic = new aws.sns.Topic("my_topic", {
name: "my_topic",
deliveryPolicy: `{
"http": {
"defaultHealthyRetryPolicy": {
"numRetries": 3,
"numNoDelayRetries": 0,
"minDelayTarget": 20,
"maxDelayTarget": 20,
"numMinDelayRetries": 0,
"numMaxDelayRetries": 0,
"backoffFunction": "linear"
},
"disableSubscriptionOverrides": false
}
}
`,
kmsMasterKeyId: "alias/aws/sns",
tags: {
Environment: "myproduction",
},
});
// Create an AWS resource (SQS)
const myQueueDlq = new aws.sqs.Queue("my_queue_dlq", {
name: "my_queue_dlq",
delaySeconds: 90,
maxMessageSize: 2048,
messageRetentionSeconds: 86400,
receiveWaitTimeSeconds: 10,
policy: JSON.stringify({
"Version": "2012-10-17",
"Id": "arn:aws:sqs:my-region:my-account:my_queue_dlq/SQSDefaultPolicy",
"Statement": [
{
"Sid": "__owner_statement",
"Action": "sqs:*",
"Effect": "Allow",
"Resource": "arn:aws:sqs:my-region:my-account:my_queue_dlq",
"Principal": {
"AWS": [
"arn:aws:iam::my-account:user/my_user"
]
}
}
]
}),
tags: {
Environment: "myproduction",
},
}, { dependsOn: [myuser, mypolicy, policyAttachment] });
const myQueue = new aws.sqs.Queue("my_queue", {
name: "my_queue",
delaySeconds: 90,
maxMessageSize: 2048,
messageRetentionSeconds: 86400,
receiveWaitTimeSeconds: 10,
policy: JSON.stringify({
"Version": "2012-10-17",
"Id": "arn:aws:sqs:my-region:my-account:my_queue/SQSDefaultPolicy",
"Statement": [
{
"Sid": "__owner_statement",
"Action": "sqs:*",
"Effect": "Allow",
"Resource": "arn:aws:sqs:my-region:my-account:my_queue",
"Principal": {
"AWS": [
"arn:aws:iam::my-account:user/my_user"
]
}
}
]
}),
//redrivePolicy: "{\"deadLetterTargetArn\":\"arn:aws:sqs:my-region:my-account:my_queue_dlq\",\"maxReceiveCount\":\"4\"}",
tags: {
Environment: "myproduction",
},
}, { dependsOn: [myuser, mypolicy, policyAttachment, myQueueDlq] });
export const iamUserName = myuser.id;
export const iamAccesskeyID = myAccessKey.id;
export const iamAccesskeySecret = myAccessKey.sesSmtpPasswordV4;
export const arnPolicy = mypolicy.id;
export const arnTopic = myTopic.id;
export const urlQueueDlq = myQueueDlq.id;
export const urlQueue = myQueue.id;
sed -i "s/"my-region"/"us-east-2"/g" index.ts
sed -i "s/"my-account"/"555555555555"/g" index.ts
npm install
pulumi stack init
pulumi preview
pulumi config set aws:profile my-profile
pulumi config set aws:region us-east-2
pulumi up
pulumi destroy
pulumi stack rm dev
Reference
이 문제에 관하여(또 다른 IaC 도구 ...), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smashse/another-iac-tool-408b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)