주의
aws-nuke용 이 저장소는 더 이상 적극적으로 유지 관리되지 않습니다. 사용자는 ekristen/aws-nuke에서 이 프로젝트의 적극적으로 유지 관리되는 포크로 전환하는 것이 좋습니다. 이 프로젝트가 진행되는 동안 우리가 받은 모든 지원과 기여에 감사드립니다. 우리는 포크가 귀하가 aws-nuke에서 기대하는 기능과 지원을 계속 제공할 것이라고 믿습니다. 이러한 지원 중단은 문제를 해결하거나 끌어오기 요청을 수락하거나 이 저장소에서 향후 릴리스를 만들지 않는다는 것을 의미합니다. 이해와 지원에 감사드립니다.
AWS 계정에서 모든 리소스를 제거합니다.
개발 상태 aws-nuke 는 안정적이지만 모든 AWS 리소스가 여기에 포함되는 것은 아닙니다. 누락된 리소스를 추가하고 끌어오기 요청을 생성하거나 이슈를 생성하도록 권장됩니다.
aws-nuke 는 매우 파괴적인 도구이므로 사용 시 매우 주의해야 합니다. 그렇지 않으면 프로덕션 데이터가 삭제될 수 있습니다.
모든 리소스를 잃을 여유가 없는 AWS 계정에서는 이 애플리케이션을 실행하지 않는 것이 좋습니다.
사고의 폭발 반경을 줄이기 위해 몇 가지 안전 예방 조치가 있습니다.
--no-dry-run
추가해야 합니다.prod
문자열이 포함되어서는 안 됩니다. 이 문자열은 하드코딩되어 있으며 모든 실제 생산 계정(예: mycompany-production-ecr
)에 추가하는 것이 좋습니다.안전 절차를 개선할 아이디어가 있으면 자유롭게 문제를 제기해 주세요.
우리는 일반적으로 충분한 변경 사항이 적용되고 한동안 테스트를 거친 후에 새 버전을 출시합니다.
릴리스 페이지에서 Linux, macOS 및 Windows 바이너리를 찾을 수 있지만 quay.io/rebuy/aws-nuke 및 docker.io/rebuy/aws-nuke에서 컨테이너화된 버전도 제공합니다. 둘 다 여러 아키텍처(amd64, arm64 및 armv7)에 사용할 수 있습니다.
먼저 aws-nuke 에 대한 구성 파일을 생성해야 합니다. 이것은 최소한의 것입니다:
regions :
- eu-west-1
- global
account-blocklist :
- " 999999999999 " # production
accounts :
" 000000000000 " : {} # aws-nuke-example
이 구성을 사용하면 aws-nuke를 실행할 수 있습니다.
$ aws-nuke -c config/nuke-config.yml --profile aws-nuke-example
aws-nuke version v1.0.39.gc2f318f - Fri Jul 28 16:26:41 CEST 2017 - c2f318f37b7d2dec0e646da3d4d05ab5296d5bce
Do you really want to nuke the account with the ID 000000000000 and the alias 'aws-nuke-example'?
Do you want to continue? Enter account alias to continue.
> aws-nuke-example
eu-west-1 - EC2DHCPOption - 'dopt-bf2ec3d8' - would remove
eu-west-1 - EC2Instance - 'i-01b489457a60298dd' - would remove
eu-west-1 - EC2KeyPair - 'test' - would remove
eu-west-1 - EC2NetworkACL - 'acl-6482a303' - cannot delete default VPC
eu-west-1 - EC2RouteTable - 'rtb-ffe91e99' - would remove
eu-west-1 - EC2SecurityGroup - 'sg-220e945a' - cannot delete group 'default'
eu-west-1 - EC2SecurityGroup - 'sg-f20f958a' - would remove
eu-west-1 - EC2Subnet - 'subnet-154d844e' - would remove
eu-west-1 - EC2Volume - 'vol-0ddfb15461a00c3e2' - would remove
eu-west-1 - EC2VPC - 'vpc-c6159fa1' - would remove
eu-west-1 - IAMUserAccessKey - 'my-user -> ABCDEFGHIJKLMNOPQRST' - would remove
eu-west-1 - IAMUserPolicyAttachment - 'my-user -> AdministratorAccess' - [UserName: "my-user", PolicyArn: "arn:aws:iam::aws:policy/AdministratorAccess", PolicyName: "AdministratorAccess"] - would remove
eu-west-1 - IAMUser - 'my-user' - would remove
Scan complete: 13 total, 11 nukeable, 2 filtered.
Would delete these resources. Provide --no-dry-run to actually destroy resources.
보시다시피 aws-nuke는 발견된 모든 리소스와 종료만 나열합니다. 이는 --no-dry-run
플래그가 없기 때문입니다. 또한 관리자를 삭제하려고 합니다. 우리는 이 사용자를 사용하여 계정에 액세스하기 때문에 이렇게 하고 싶지 않습니다. 따라서 이 사용자를 무시하도록 구성을 확장해야 합니다.
regions :
- eu-west-1
account-blocklist :
- " 999999999999 " # production
accounts :
" 000000000000 " : # aws-nuke-example
filters :
IAMUser :
- " my-user "
IAMUserPolicyAttachment :
- " my-user -> AdministratorAccess "
IAMUserAccessKey :
- " my-user -> ABCDEFGHIJKLMNOPQRST "
$ aws-nuke -c config/nuke-config.yml --profile aws-nuke-example --no-dry-run
aws-nuke version v1.0.39.gc2f318f - Fri Jul 28 16:26:41 CEST 2017 - c2f318f37b7d2dec0e646da3d4d05ab5296d5bce
Do you really want to nuke the account with the ID 000000000000 and the alias 'aws-nuke-example'?
Do you want to continue? Enter account alias to continue.
> aws-nuke-example
eu-west-1 - EC2DHCPOption - 'dopt-bf2ec3d8' - would remove
eu-west-1 - EC2Instance - 'i-01b489457a60298dd' - would remove
eu-west-1 - EC2KeyPair - 'test' - would remove
eu-west-1 - EC2NetworkACL - 'acl-6482a303' - cannot delete default VPC
eu-west-1 - EC2RouteTable - 'rtb-ffe91e99' - would remove
eu-west-1 - EC2SecurityGroup - 'sg-220e945a' - cannot delete group 'default'
eu-west-1 - EC2SecurityGroup - 'sg-f20f958a' - would remove
eu-west-1 - EC2Subnet - 'subnet-154d844e' - would remove
eu-west-1 - EC2Volume - 'vol-0ddfb15461a00c3e2' - would remove
eu-west-1 - EC2VPC - 'vpc-c6159fa1' - would remove
eu-west-1 - IAMUserAccessKey - 'my-user -> ABCDEFGHIJKLMNOPQRST' - filtered by config
eu-west-1 - IAMUserPolicyAttachment - 'my-user -> AdministratorAccess' - [UserName: "my-user", PolicyArn: "arn:aws:iam::aws:policy/AdministratorAccess", PolicyName: "AdministratorAccess"] - would remove
eu-west-1 - IAMUser - 'my-user' - filtered by config
Scan complete: 13 total, 8 nukeable, 5 filtered.
Do you really want to nuke these resources on the account with the ID 000000000000 and the alias 'aws-nuke-example'?
Do you want to continue? Enter account alias to continue.
> aws-nuke-example
eu-west-1 - EC2DHCPOption - 'dopt-bf2ec3d8' - failed
eu-west-1 - EC2Instance - 'i-01b489457a60298dd' - triggered remove
eu-west-1 - EC2KeyPair - 'test' - triggered remove
eu-west-1 - EC2RouteTable - 'rtb-ffe91e99' - failed
eu-west-1 - EC2SecurityGroup - 'sg-f20f958a' - failed
eu-west-1 - EC2Subnet - 'subnet-154d844e' - failed
eu-west-1 - EC2Volume - 'vol-0ddfb15461a00c3e2' - failed
eu-west-1 - EC2VPC - 'vpc-c6159fa1' - failed
eu-west-1 - S3Object - 's3://rebuy-terraform-state-138758637120/run-terraform.lock' - triggered remove
Removal requested: 2 waiting, 6 failed, 5 skipped, 0 finished
eu-west-1 - EC2DHCPOption - 'dopt-bf2ec3d8' - failed
eu-west-1 - EC2Instance - 'i-01b489457a60298dd' - waiting
eu-west-1 - EC2KeyPair - 'test' - removed
eu-west-1 - EC2RouteTable - 'rtb-ffe91e99' - failed
eu-west-1 - EC2SecurityGroup - 'sg-f20f958a' - failed
eu-west-1 - EC2Subnet - 'subnet-154d844e' - failed
eu-west-1 - EC2Volume - 'vol-0ddfb15461a00c3e2' - failed
eu-west-1 - EC2VPC - 'vpc-c6159fa1' - failed
Removal requested: 1 waiting, 6 failed, 5 skipped, 1 finished
--- truncating long output ---
보시다시피 aws-nuke는 이제 리소스 간의 종속성을 고려하지 않고 필터링되지 않은 모든 리소스를 삭제하려고 시도합니다. 이로 인해 무시할 수 있는 API 오류가 발생합니다. 이러한 오류가 계속 나타나는 경우 aws-nuke 실행이 끝날 때 표시됩니다.
aws-nuke는 지정된 리소스가 모두 삭제되거나 오류가 있는 리소스만 남을 때까지 모든 리소스 삭제를 재시도합니다.
aws-nuke 를 인증하는 방법에는 두 가지가 있습니다. 정적 자격 증명과 프로필이 있습니다. 나중 항목은 공유 자격 증명 파일(예: ~/.aws/credentials
) 또는 공유 구성 파일(예: ~/.aws/config
)에서 구성할 수 있습니다.
정적 자격 증명을 사용하려면 명령줄 플래그 --access-key-id
및 --secret-access-key
필요합니다. --session-token
플래그는 임시 세션에만 필요합니다.
공유 프로필을 사용하려면 명령줄 플래그 --profile
이 필요합니다. 프로필은 공유 자격 증명 파일 또는 가정 역할이 있는 공유 구성 파일의 정적 자격 증명을 사용하여 정의되어야 합니다.
기본이 아닌 AWS 엔드포인트에 대해 실행되도록 aws-nuke를 구성할 수 있습니다. 예를 들어 S3 어플라이언스 또는 Stratoscale 클러스터와 같은 로컬 엔드포인트를 가리키는 통합 테스트에 사용될 수 있습니다.
사용자 정의 엔드포인트를 사용하도록 aws-nuke를 구성하려면 다음 예와 같이 구성 지시문을 추가합니다.
regions :
- demo10
# inspired by https://www.terraform.io/docs/providers/aws/guides/custom-service-endpoints.html
endpoints :
- region : demo10
tls_insecure_skip_verify : true
services :
- service : ec2
url : https://10.16.145.115/api/v2/aws/ec2
- service : s3
url : https://10.16.145.115:1060
- service : rds
url : https://10.16.145.115/api/v2/aws/rds
- service : elbv2
url : https://10.16.145.115/api/v2/aws/elbv2
- service : efs
url : https://10.16.145.115/api/v2/aws/efs
- service : emr
url : https://10.16.145.115/api/v2/aws/emr
- service : autoscaling
url : https://10.16.145.115/api/v2/aws/autoscaling
- service : cloudwatch
url : https://10.16.145.115/api/v2/aws/cloudwatch
- service : sns
url : https://10.16.145.115/api/v2/aws/sns
- service : iam
url : https://10.16.145.115/api/v2/aws/iam
- service : acm
url : https://10.16.145.115/api/v2/aws/acm
account-blocklist :
- " account-id-of-custom-region-prod " # production
accounts :
" account-id-of-custom-region-demo10 " :
그런 다음 다음과 같이 사용할 수 있습니다.
$ aws-nuke -c config/my.yaml --access-key-id --secret-access-key --default-region demo10
aws-nuke version v2.11.0.2.gf0ad3ac.dirty - Tue Nov 26 19:15:12 IST 2019 - f0ad3aca55eb66b93b88ce2375f8ad06a7ca856f
Do you really want to nuke the account with the ID account-id-of-custom-region-demo10 and the alias 'account-id-of-custom-region-demo10'?
Do you want to continue? Enter account alias to continue.
> account-id-of-custom-region-demo10
demo10 - EC2Volume - vol-099aa1bb08454fd5bc3499897f175fd8 - [tag:Name: "volume_of_5559b38e-0a56-4078-9a6f-eb446c21cadf"] - would remove
demo10 - EC2Volume - vol-11e9b09c71924354bcb4ee77e547e7db - [tag:Name: "volume_of_e4f8c806-0235-4578-8c08-dce45d4c2952"] - would remove
demo10 - EC2Volume - vol-1a10cb3f3119451997422c435abf4275 - [tag:Name: "volume-dd2e4c4a"] - would remove
demo10 - EC2Volume - vol-1a2e649df1ef449686ef8771a078bb4e - [tag:Name: "web-server-5"] - would remove
demo10 - EC2Volume - vol-481d09bbeb334ec481c12beee6f3012e - [tag:Name: "volume_of_15b606ce-9dcd-4573-b7b1-4329bc236726"] - would remove
demo10 - EC2Volume - vol-48f6bd2bebb945848b029c80b0f2de02 - [tag:Name: "Data volume for 555e9f8a"] - would remove
demo10 - EC2Volume - vol-49f0762d84f0439da805d11b6abc1fee - [tag:Name: "Data volume for acb7f3a5"] - would remove
demo10 - EC2Volume - vol-4c34656f823542b2837ac4eaff64762b - [tag:Name: "wpdb"] - would remove
demo10 - EC2Volume - vol-875f091078134fee8d1fe3b1156a4fce - [tag:Name: "volume-f1a7c95f"] - would remove
demo10 - EC2Volume - vol-8776a0d5bd4e4aefadfa8038425edb20 - [tag:Name: "web-server-6"] - would remove
demo10 - EC2Volume - vol-8ed468bfab0b42c3bc617479b8f33600 - [tag:Name: "web-server-3"] - would remove
demo10 - EC2Volume - vol-94e0370b6ab54f03822095d74b7934b2 - [tag:Name: "web-server-2"] - would remove
demo10 - EC2Volume - vol-9ece34dfa7f64dd583ab903a1273340c - [tag:Name: "volume-4ccafc2e"] - would remove
demo10 - EC2Volume - vol-a3fb3e8800c94452aff2fcec7f06c26b - [tag:Name: "web-server-0"] - would remove
demo10 - EC2Volume - vol-a53954e17cb749a283d030f26bbaf200 - [tag:Name: "volume-5484e330"] - would remove
demo10 - EC2Volume - vol-a7afe64f4d0f4965a6703cc0cfab2ba4 - [tag:Name: "Data volume for f1a7c95f"] - would remove
demo10 - EC2Volume - vol-d0bc3f2c887f4072a9fda0b8915d94c1 - [tag:Name: "physical_volume_of_39c29f53-eac4-4f02-9781-90512cc7c563"] - would remove
demo10 - EC2Volume - vol-d1f066d8dac54ae59d087d7e9947e8a9 - [tag:Name: "Data volume for 4ccafc2e"] - would remove
demo10 - EC2Volume - vol-d9adb3f084cd4d588baa08690349b1f9 - [tag:Name: "volume_of_84854c9b-98aa-4f5b-926a-38b3398c3ad2"] - would remove
demo10 - EC2Volume - vol-db42e471b19f42b7835442545214bc1a - [tag:Name: "lb-tf-lb-20191126090616258000000002"] - would remove
demo10 - EC2Volume - vol-db80932fb47243efa67c9dd34223c647 - [tag:Name: "web-server-5"] - would remove
demo10 - EC2Volume - vol-dbea1d1083654d30a43366807a125aed - [tag:Name: "volume-555e9f8a"] - would remove
--- truncating long output ---
aws-nuke는 많은 리소스를 삭제하며 릴리스에 더 많은 리소스가 추가될 수 있습니다. 결국 모든 리소스가 삭제되어야 합니다. 삭제할 리소스를 제한할 수 있습니다. 이를 구성하는 방법에는 여러 가지가 있습니다.
한 가지 방법은 이미 언급한 필터입니다. 이를 위해서는 각 리소스의 식별자를 알아야 합니다. 두 가지 방법을 사용하면 전체 리소스 유형(예: S3Bucket
)이 삭제되는 것을 방지할 수도 있습니다.
--target
플래그는 누킹을 지정된 리소스 유형으로 제한합니다.--exclude
플래그는 지정된 리소스 유형의 누킹을 방지합니다.다음 예와 같이 구성 파일에서 리소스 유형을 구성할 수도 있습니다.
---
regions:
- "eu-west-1"
account-blocklist:
- 1234567890
resource-types:
# only nuke these three resources
targets:
- S3Object
- S3Bucket
- IAMRole
accounts:
555133742: {}
---
regions:
- "eu-west-1"
account-blocklist:
- 1234567890
resource-types:
# don't nuke IAM users
excludes:
- IAMUser
accounts:
555133742: {}
대상이 여러 위치(예: CLI 및 계정별)에 지정된 경우 모든 위치에서 리소스 유형을 지정해야 합니다. 즉, 각 구성은 이전 구성을 제한합니다.
제외를 사용하면 해당 리소스 유형이 모두 삭제되지 않습니다.
힌트: 다음 명령을 사용하면 사용 가능한 모든 리소스 유형을 볼 수 있습니다.
aws-nuke resource-types
이 기능은 아직 출시되지 않았으며 아마도
v2.18
의 일부일 것입니다.
aws-nuke는 AWS Cloud Control API를 통한 리소스 제거를 지원합니다. aws-nuke를 실행하면 Cloud Control을 통해 수동으로 관리되는 리소스 세트가 자동으로 제거됩니다.
Cloud Control이 지원하는 리소스의 하위 집합만 자동으로 제거됩니다. 이미 구현된 리소스가 있을 수 있고 이를 추가하면 Cloud Control에 다른 명명 체계와 다른 속성 집합이 있기 때문에 사용자 구성의 기존 필터를 우회하게 되기 때문입니다. 또한 aws-nuke 에서 아직 지원되지 않는 특별한 처리가 필요한 일부 클라우드 제어 리소스가 있습니다.
자동으로 지원되는 Cloud Control 리소스의 하위 집합이 제한되어 있더라도 aws-nuke를 구성하여 추가 리소스를 시도하도록 할 수 있습니다. 구성 파일을 통해 또는 명령줄 플래그를 통해.
구성 파일의 경우 resource-types.cloud-control
목록에 리소스를 추가해야 합니다.
resource-types :
cloud-control :
- AWS::EC2::TransitGateway
- AWS::EC2::VPC
명령줄을 사용하려면 추가하려는 각 리소스에 대해 --cloud-control
플래그를 추가해야 합니다.
aws-nuke
-c nuke-config.yaml
--cloud-control AWS::EC2::TransitGateway
--cloud-control AWS::EC2::VPC
참고: Cloud Control에서 지원되고 이미 aws-nuke 에 의해 기본적으로 구현된 일부 리소스가 있습니다. 해당 리소스에 Cloud Control을 사용하도록 구성하면 이 리소스에 대해 기본적으로 구현된 코드가 실행되지 않습니다. 예를 들어 --cloud-control AWS::EC2::VPC
사용하면 EC2VPC
리소스를 사용하지 않습니다.
상당히 독선적인 몇 가지 기능이 있습니다. 모든 사람이 이러한 작업을 수행할 수 있도록 aws-nuke 에는 해당 기능을 수동으로 활성화하는 플래그가 있습니다. 다음과 같이 구성의 루트 수준에서 구성할 수 있습니다.
---
feature-flags :
disable-deletion-protection :
RDSInstance : true
EC2Instance : true
CloudformationStack : true
force-delete-lightsail-addons : true
예를 들어 현재 사용자를 삭제하지 않거나 전 세계적으로 공유되는 네임스페이스가 있고 다시 생성하기 어려울 수 있는 S3 버킷과 같은 리소스의 경우 이를 필터링하는 것이 중요합니다. 현재 필터링은 리소스 식별자를 기반으로 합니다. 식별자는 aws-nuke 의 첫 번째 단계로 인쇄됩니다(예: EC2 인스턴스의 경우 i-01b489457a60298dd
).
참고: 필터를 사용하더라도 모든 리소스를 잃을 여유가 없는 AWS 계정에서 aws-nuke를 실행해서는 안 됩니다. 필터 구성에서는 실수하기 쉽습니다. 또한 aws-nuke는 지속적으로 개발 중이므로 새 코드를 아무리 주의 깊게 검토하더라도 항상 새로운 버그가 발생할 가능성이 있습니다.
필터는 계정별 구성의 일부이며 리소스 유형별로 그룹화됩니다. 다음은 액세스 권한과 두 개의 액세스 키가 있는 admin
를 제외한 모든 리소스를 삭제하는 구성의 예입니다.
---
regions :
- global
- eu-west-1
account-blocklist :
- 1234567890
accounts :
0987654321 :
filters :
IAMUser :
- " admin "
IAMUserPolicyAttachment :
- " admin -> AdministratorAccess "
IAMUserAccessKey :
- " admin -> AKSDAFRETERSDF "
- " admin -> AFGDSGRTEWSFEY "
리소스 식별자가 목록의 필터와 정확히 일치하는 모든 리소스는 건너뜁니다. 이는 aws-nuke 실행 시 "filtered by config"로 표시됩니다.
일부 리소스는 속성을 통한 필터링을 지원합니다. 리소스가 이러한 속성을 지원하면 다음 예와 같이 출력에 나열됩니다.
global - IAMUserPolicyAttachment - 'admin -> AdministratorAccess' - [RoleName: "admin", PolicyArn: "arn:aws:iam::aws:policy/AdministratorAccess", PolicyName: "AdministratorAccess"] - would remove
속성을 사용하려면 일반 문자열 대신 properties
과 value
포함된 개체를 지정해야 합니다.
이러한 유형을 사용하여 구성을 단순화할 수 있습니다. 예를 들어 단일 사용자의 모든 액세스 키를 보호할 수 있습니다.
IAMUserAccessKey :
- property : UserName
value : " admin "
완전 일치 외에 추가 비교 유형도 있습니다.
exact
– 식별자는 주어진 문자열과 정확히 일치해야 합니다. 이것이 기본값입니다.contains
– 식별자에는 지정된 문자열이 포함되어야 합니다.glob
– 식별자는 지정된 glob 패턴과 일치해야 합니다. 이는 문자열에 *
및 ?
와 같은 와일드카드가 포함될 수 있음을 의미합니다. . globbing은 파일 경로용으로 설계되었으므로 와일드카드는 디렉터리 구분 기호( /
)와 일치하지 않습니다. glob 패턴에 대한 자세한 내용은 라이브러리 문서에서 확인할 수 있습니다.regex
– 식별자는 지정된 정규식과 일치해야 합니다. 구문에 대한 자세한 내용은 라이브러리 설명서에서 확인할 수 있습니다.dateOlderThan
- 식별자가 타임스탬프로 구문 분석됩니다. 오프셋이 추가된 후( value
필드에 지정) 결과 타임스탬프는 현재 시간 이후여야 합니다. 오프셋 구문에 대한 자세한 내용은 라이브러리 설명서에서 확인할 수 있습니다. 지원되는 날짜 형식은 에포크 시간, 2006-01-02
, 2006/01/02
, 2006-01-02T15:04:05Z
, 2006-01-02T15:04:05.999999999Z07:00
및 2006-01-02T15:04:05Z07:00
. 기본이 아닌 비교 유형을 사용하려면 일반 문자열 대신 type
과 value
가진 객체를 지정해야 합니다.
이러한 유형을 사용하여 구성을 단순화할 수 있습니다. 예를 들어 glob
사용하여 단일 사용자의 모든 액세스 키를 보호할 수 있습니다.
IAMUserAccessKey :
- type : glob
value : " admin -> * "
필터 속성과 필터 유형을 함께 사용할 수도 있습니다. 예를 들어 특정 TLD의 모든 호스팅 영역을 보호하려면 다음을 수행하세요.
Route53HostedZone :
- property : Name
type : glob
value : " *.rebuy.cloud. "
invert: true
사용하여 모든 필터 결과를 반전할 수 있습니다. 예를 들면 다음과 같습니다.
CloudFormationStack :
- property : Name
value : " foo "
invert : true
이 경우 "foo"라는 항목을 제외한 모든 CloudFormationStack이 필터링됩니다. aws-nuke는 내부적으로 모든 리소스를 가져와 모든 필터를 적용한다는 점에 유의하세요. 필터가 일치하면 노드가 필터링된 것으로 표시됩니다.
일부 필터는 여러 계정에서 동일한 경우가 있을 수 있습니다. 특히 Terraform과 같은 프로비저닝 도구를 사용하거나 IAM 리소스가 동일한 패턴을 따르는 경우 이런 일이 발생할 수 있습니다.
이 경우 aws-nuke는 여러 계정에 적용할 수 있는 필터 사전 설정을 지원합니다. 구성은 다음과 같습니다.
---
regions :
- " global "
- " eu-west-1 "
account-blocklist :
- 1234567890
accounts :
555421337 :
presets :
- " common "
555133742 :
presets :
- " common "
- " terraform "
555134237 :
presets :
- " common "
- " terraform "
filters :
EC2KeyPair :
- " notebook "
presets :
terraform :
filters :
S3Bucket :
- type : glob
value : " my-statebucket-* "
DynamoDBTable :
- " terraform-lock "
common :
filters :
IAMRole :
- " OrganizationAccountAccessRole "
brew install aws-nuke
가장 쉬운 설치 방법은 GitHub에서 최신 릴리스를 다운로드하는 것입니다.
$ wget -c https://github.com/rebuy-de/aws-nuke/releases/download/v2.25.0/aws-nuke-v2.25.0-linux-amd64.tar.gz -O - | tar -xz -C $HOME/bin
다운로드 및 추출 | $ wget -c https://github.com/rebuy-de/aws-nuke/releases/download/v2.25.0/aws-nuke-v2.25.0-linux-amd64.tar.gz -O - | tar -xz -C $HOME/bin
$ aws-nuke-v2.25.0-linux-amd64
실행
소스에서 aws-nuke를 컴파일하려면 작동하는 Golang 개발 환경이 필요합니다. 소스는 $GOPATH/src/github.com/rebuy-de/aws-nuke
에 복제되어야 합니다.
또한 golint와 GNU Make를 설치해야 합니다.
그런 다음 make build
실행하여 바이너리를 프로젝트 디렉터리로 컴파일하거나 $GOPATH/bin
에 make install
go install aws-nuke를 실행하면 됩니다. make xc
사용하면 다른 플랫폼용 aws-nuke를 크로스 컴파일할 수 있습니다.
다음과 같은 명령을 사용하여 Docker에서 aws-nuke를 실행할 수 있습니다.
$ docker run
--rm -it
-v /full-path/to/nuke-config.yml:/home/aws-nuke/config.yml
-v /home/user/.aws:/home/aws-nuke/.aws
quay.io/rebuy/aws-nuke:v2.25.0
--profile default
--config /home/aws-nuke/config.yml
이를 작동시키려면 AWS 구성 및 aws-nuke 구성의 경로를 조정해야 합니다.
또한 올바른 AWS 프로필을 지정해야 합니다. AWS 디렉터리를 탑재하는 대신 --access-key-id
및 --secret-access-key
플래그를 사용할 수 있습니다.
이미지 태그에 최신 버전을 사용하고 있는지 확인하세요. 또는 최신 개발 버전에 main
사용할 수도 있지만 언제든지 중단될 가능성이 더 높다는 점에 유의하세요.
aws-nuke 를 단위 테스트하려면 일부 테스트를 실행하려면 gomock이 필요합니다. 이것은 go generate ./...
통해 실행되지만 make test
통해 자동으로 실행됩니다. 단위 테스트를 실행하려면 다음 안내를 따르세요.
make test
버그 보고서나 기능 요청이 있으면 GitHub 문제를 자유롭게 생성하세요. 질문이 있는 경우 메일링 리스트([email protected])를 사용하세요. 누군가 이미 동일한 문제를 겪었는지 메일링 리스트 아카이브에서 검색할 수도 있습니다: https://groups.google.com/d/forum/aws-nuke
이 리포지토리를 포크하고 변경하고 리포지토리에 대한 끌어오기 요청을 생성하여 aws-nuke 에 기여할 수 있습니다. 문제 해결 방법을 잘 모르거나 기여에 대한 다른 질문이 있는 경우 GitHub 문제를 생성해 주세요.