Prudence
Ce référentiel pour aws-nuke n'est plus activement maintenu. Nous recommandons aux utilisateurs de passer au fork activement maintenu de ce projet sur ekristen/aws-nuke. Nous apprécions tout le soutien et les contributions que nous avons reçus tout au long de la vie de ce projet. Nous pensons que le fork continuera à fournir les fonctionnalités et le support que vous attendez d'aws-nuke. Veuillez noter que cette dépréciation signifie que nous ne résoudrons pas les problèmes, n'accepterons pas les demandes d'extraction ou ne créerons pas de versions futures à partir de ce référentiel. Merci pour votre compréhension et votre soutien.
Supprimez toutes les ressources d'un compte AWS.
Statut de développement aws-nuke est stable, mais il est probable que toutes les ressources AWS n'en soient pas couvertes. Soyez encouragé à ajouter des ressources manquantes et à créer une Pull Request ou à créer un problème.
Sachez qu'aws -nuke est un outil très destructeur, vous devez donc être très prudent lorsque vous l'utilisez. Sinon, vous risquez de supprimer les données de production.
Nous vous déconseillons fortement d'exécuter cette application sur un compte AWS, où vous ne pouvez pas vous permettre de perdre toutes les ressources.
Pour réduire le rayon d'explosion des accidents, il existe quelques précautions de sécurité :
--no-dry-run
pour supprimer réellement les ressources.prod
. Cette chaîne est codée en dur et il est recommandé de l'ajouter à chaque compte de production réel (par exemple mycompany-production-ecr
).N'hésitez pas à créer un problème si vous avez des idées pour améliorer les procédures de sécurité.
Nous publions généralement une nouvelle version une fois que suffisamment de modifications ont été apportées et ont été testées pendant un certain temps.
Vous pouvez trouver les binaires Linux, macOS et Windows sur la page des versions, mais nous proposons également des versions conteneurisées sur quay.io/rebuy/aws-nuke et docker.io/rebuy/aws-nuke. Les deux sont disponibles pour plusieurs architectures (amd64, arm64 et armv7).
Dans un premier temps, vous devez créer un fichier de configuration pour aws-nuke . C'est un minimum :
regions :
- eu-west-1
- global
account-blocklist :
- " 999999999999 " # production
accounts :
" 000000000000 " : {} # aws-nuke-example
Avec cette configuration nous pouvons exécuter 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.
Comme nous le voyons, aws-nuke répertorie uniquement toutes les ressources et sorties trouvées. C'est parce que l'indicateur --no-dry-run
est manquant. Il souhaite également supprimer l'administrateur. Nous ne voulons pas faire cela, car nous utilisons cet utilisateur pour accéder à notre compte. Nous devons donc étendre la configuration pour qu'elle ignore cet utilisateur :
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 ---
Comme vous le voyez, aws-nuke essaie désormais de supprimer toutes les ressources qui ne sont pas filtrées, sans se soucier des dépendances entre elles. Cela entraîne des erreurs API qui peuvent être ignorées. Ces erreurs sont affichées à la fin de l'exécution d'Aws-nuke , si elles continuent à apparaître.
aws-nuke tente de supprimer toutes les ressources jusqu'à ce que toutes celles spécifiées soient supprimées ou jusqu'à ce qu'il ne reste plus que des ressources comportant des erreurs.
Il existe deux façons d'authentifier aws-nuke . Il existe des informations d'identification et des profils statiques. Ce dernier peut être configuré dans le fichier d'informations d'identification partagé (c'est-à-dire ~/.aws/credentials
) ou dans le fichier de configuration partagé (c'est-à-dire ~/.aws/config
).
Pour utiliser des informations d'identification statiques, les indicateurs de ligne de commande --access-key-id
et --secret-access-key
sont requis. L'indicateur --session-token
n'est requis que pour les sessions temporaires.
Pour utiliser des profils partagés, l'indicateur de ligne de commande --profile
est requis. Le profil doit être défini avec des informations d'identification statiques dans le fichier d'informations d'identification partagé ou dans un fichier de configuration partagé avec un rôle assumant.
Il est possible de configurer aws-nuke pour qu'il s'exécute sur des points de terminaison AWS autres que ceux par défaut. Il pourrait être utilisé pour des tests d'intégration pointant vers un point de terminaison local tel qu'une appliance S3 ou un cluster Stratoscale par exemple.
Pour configurer aws-nuke pour utiliser des points de terminaison personnalisés, ajoutez les directives de configuration comme indiqué dans l'exemple suivant :
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 " :
Celui-ci peut alors être utilisé comme suit :
$ 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 supprime de nombreuses ressources et d'autres pourraient en être ajoutées à chaque version. Finalement, toutes les ressources devraient être supprimées. Vous souhaiterez peut-être restreindre les ressources à supprimer. Il existe plusieurs façons de configurer cela.
Les filtres, qui ont déjà été mentionnés, constituent une solution. Cela nécessite de connaître l'identifiant de chaque ressource. Il est également possible d'empêcher la suppression de types de ressources entiers (par exemple S3Bucket
) avec deux méthodes.
--target
limite l'attaque nucléaire aux types de ressources spécifiés.--exclude
empêche la destruction des types de ressources spécifiés.Il est également possible de configurer les types de ressources dans le fichier de configuration comme dans ces exemples :
---
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: {}
Si les cibles sont spécifiées à plusieurs endroits (par exemple CLI et spécifiques au compte), alors un type de ressource doit être spécifié à tous les endroits. Autrement dit chaque configuration limite les précédentes.
Si une exclusion est utilisée, tous ses types de ressources ne seront pas supprimés.
Astuce : Vous pouvez voir tous les types de ressources disponibles avec cette commande :
aws-nuke resource-types
Cette fonctionnalité n'est pas encore publiée et fait probablement partie de
v2.18
.
aws-nuke prend en charge la suppression de ressources via l'API AWS Cloud Control. Lors de l'exécution d'aws-nuke , il supprimera automatiquement un ensemble de ressources géré manuellement via Cloud Control.
Seul un sous-ensemble des ressources prises en charge par Cloud Control sera automatiquement supprimé, car il se peut que des ressources aient déjà été implémentées et leur ajout contournerait également les filtres existants dans les configurations utilisateur, car Cloud Control a un autre schéma de dénomination et un ensemble de propriétés différent. De plus, certaines ressources Cloud Control nécessitent un traitement spécial qui n'est pas encore pris en charge par aws-nuke .
Même si le sous-ensemble de ressources Cloud Control automatiquement prises en charge est limité, vous pouvez configurer aws-nuke pour lui faire essayer n'importe quelle ressource supplémentaire. Soit via les indicateurs de ligne de commande, soit via le fichier de configuration.
Pour le fichier de configuration, vous devez ajouter la ressource à la liste resource-types.cloud-control
:
resource-types :
cloud-control :
- AWS::EC2::TransitGateway
- AWS::EC2::VPC
Si vous souhaitez utiliser la ligne de commande, vous devez ajouter un indicateur --cloud-control
pour chaque ressource que vous souhaitez ajouter :
aws-nuke
-c nuke-config.yaml
--cloud-control AWS::EC2::TransitGateway
--cloud-control AWS::EC2::VPC
Remarque : Certaines ressources sont prises en charge par Cloud Control et sont déjà implémentées de manière native par aws-nuke . Si vous configurez l'utilisation de Cloud Control pour ces ressources, il n'exécutera pas le code implémenté de manière native pour cette ressource. Par exemple, avec --cloud-control AWS::EC2::VPC
il n'utilisera pas la ressource EC2VPC
.
Certaines fonctionnalités sont assez opiniâtres. Pour que cela fonctionne pour tout le monde, aws-nuke dispose d'indicateurs permettant d'activer manuellement ces fonctionnalités. Ceux-ci peuvent être configurés au niveau racine de la configuration, comme ceci :
---
feature-flags :
disable-deletion-protection :
RDSInstance : true
EC2Instance : true
CloudformationStack : true
force-delete-lightsail-addons : true
Il est possible de filtrer, ce qui est important pour ne pas supprimer l'utilisateur actuel par exemple ou pour des ressources telles que les compartiments S3 qui ont un espace de noms partagé globalement et peuvent être difficiles à recréer. Actuellement, le filtrage est basé sur l'identifiant de la ressource. L'identifiant sera imprimé lors de la première étape d' aws-nuke (par exemple i-01b489457a60298dd
pour une instance EC2).
Remarque : Même avec des filtres, vous ne devez exécuter aws-nuke sur aucun compte AWS, car vous ne pouvez pas vous permettre de perdre toutes les ressources. Il est facile de commettre des erreurs dans la configuration du filtre. De plus, étant donné qu'aws-nuke est en développement continu, il est toujours possible d'introduire de nouveaux bogues, quel que soit le soin avec lequel nous examinons le nouveau code.
Les filtres font partie de la configuration spécifique au compte et sont regroupés par types de ressources. Ceci est un exemple de configuration qui supprime toutes les ressources à l'exception de l'utilisateur admin
avec ses autorisations d'accès et ses deux clés d'accès :
---
regions :
- global
- eu-west-1
account-blocklist :
- 1234567890
accounts :
0987654321 :
filters :
IAMUser :
- " admin "
IAMUserPolicyAttachment :
- " admin -> AdministratorAccess "
IAMUserAccessKey :
- " admin -> AKSDAFRETERSDF "
- " admin -> AFGDSGRTEWSFEY "
Toute ressource dont l'identifiant de ressource correspond exactement à l'un des filtres de la liste sera ignorée. Ceux-ci seront marqués comme « filtrés par configuration » lors de l'exécution d'aws-nuke .
Certaines ressources prennent en charge le filtrage via les propriétés. Lorsqu'une ressource prend en charge ces propriétés, elles seront répertoriées dans la sortie comme dans cet exemple :
global - IAMUserPolicyAttachment - 'admin -> AdministratorAccess' - [RoleName: "admin", PolicyArn: "arn:aws:iam::aws:policy/AdministratorAccess", PolicyName: "AdministratorAccess"] - would remove
Pour utiliser des propriétés, il est nécessaire de spécifier un objet avec properties
et value
au lieu de la chaîne simple.
Ces types peuvent être utilisés pour simplifier la configuration. Par exemple, il est possible de protéger toutes les clés d'accès d'un même utilisateur :
IAMUserAccessKey :
- property : UserName
value : " admin "
Il existe également des types de comparaison supplémentaires par rapport à une correspondance exacte :
exact
– L’identifiant doit correspondre exactement à la chaîne donnée. C'est la valeur par défaut.contains
– L’identifiant doit contenir la chaîne donnée.glob
– L’identifiant doit correspondre au modèle glob donné. Cela signifie que la chaîne peut contenir des caractères génériques tels que *
et ?
. Notez que la globalisation est conçue pour les chemins de fichiers, de sorte que les caractères génériques ne correspondent pas au séparateur de répertoire ( /
). Des détails sur le modèle global peuvent être trouvés dans la documentation de la bibliothèque.regex
– L'identifiant doit correspondre à l'expression régulière donnée. Des détails sur la syntaxe peuvent être trouvés dans la documentation de la bibliothèque.dateOlderThan
- L'identifiant est analysé comme un horodatage. Une fois le décalage ajouté (spécifié dans le champ value
), l'horodatage résultant doit être APRÈS l'heure actuelle. Des détails sur la syntaxe offset peuvent être trouvés dans la documentation de la bibliothèque. Les formats de date pris en charge sont l'heure d'époque, 2006-01-02
, 2006/01/02
, 2006-01-02T15:04:05Z
, 2006-01-02T15:04:05.999999999Z07:00
et 2006-01-02T15:04:05Z07:00
. Pour utiliser un type de comparaison autre que celui par défaut, il est nécessaire de spécifier un objet avec type
et value
au lieu de la chaîne simple.
Ces types peuvent être utilisés pour simplifier la configuration. Par exemple, il est possible de protéger toutes les clés d'accès d'un seul utilisateur en utilisant glob
:
IAMUserAccessKey :
- type : glob
value : " admin -> * "
Il est également possible d'utiliser simultanément les propriétés de filtre et les types de filtre. Par exemple pour protéger toutes les zones hébergées d'un TLD spécifique :
Route53HostedZone :
- property : Name
type : glob
value : " *.rebuy.cloud. "
Tout résultat de filtre peut être inversé en utilisant invert: true
, par exemple :
CloudFormationStack :
- property : Name
value : " foo "
invert : true
Dans ce cas, tous les CloudFormationStack sauf ceux appelés "foo" seront filtrés. Sachez qu'aws -nuke utilise en interne toutes les ressources et y applique tous les filtres. Si un filtre correspond, il marque le nœud comme filtré.
Il se peut que certains filtres soient identiques sur plusieurs comptes. Cela pourrait notamment se produire si des outils de provisionnement tels que Terraform sont utilisés ou si les ressources IAM suivent le même modèle.
Dans ce cas, aws-nuke prend en charge les préréglages de filtres, qui peuvent être appliqués sur plusieurs comptes. Une configuration pourrait ressembler à ceci :
---
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
Le moyen le plus simple de l’installer consiste à télécharger la dernière version depuis GitHub.
Téléchargez et extrayez $ 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
Exécutez $ aws-nuke-v2.25.0-linux-amd64
Pour compiler aws-nuke à partir des sources, vous avez besoin d'un environnement de développement Golang fonctionnel. Les sources doivent être clonées sur $GOPATH/src/github.com/rebuy-de/aws-nuke
.
Vous devez également installer Golint et GNU Make.
Ensuite, il vous suffit d'exécuter make build
pour compiler un binaire dans le répertoire du projet ou make install
go install aws-nuke dans $GOPATH/bin
. Avec make xc
vous pouvez compiler aws-nuke pour d'autres plates-formes.
Vous pouvez exécuter aws-nuke avec Docker en utilisant une commande comme celle-ci :
$ 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
Pour que cela fonctionne, vous devez ajuster les chemins de la configuration AWS et de la configuration aws-nuke .
Vous devez également spécifier le profil AWS correct. Au lieu de monter le répertoire AWS, vous pouvez utiliser les indicateurs --access-key-id
et --secret-access-key
.
Assurez-vous d'utiliser la dernière version dans la balise d'image. Alternativement, vous pouvez utiliser main
pour la dernière version de développement, mais sachez que cela risque davantage de se briser à tout moment.
Pour tester unitairement aws-nuke , certains tests nécessitent l'exécution de gomock. Cela s'exécutera via go generate ./...
, mais est automatiquement exécuté via make test
. Pour exécuter les tests unitaires :
make test
N'hésitez pas à créer un problème GitHub pour tout rapport de bug ou demande de fonctionnalité. Veuillez utiliser notre liste de diffusion pour toute question : [email protected]. Vous pouvez également rechercher dans les archives de la liste de diffusion si quelqu'un a déjà eu le même problème : https://groups.google.com/d/forum/aws-nuke
Vous pouvez contribuer à aws-nuke en bifurquant ce référentiel, en apportant vos modifications et en créant une Pull Request sur notre référentiel. Si vous ne savez pas comment résoudre un problème ou si vous avez d'autres questions sur une contribution, veuillez créer un problème GitHub.