Comment effectuer un transfert groupé d'adresses IP Elastic entre des comptes AWS de la même Région ?

Lecture de 4 minute(s)
0

Je souhaite transférer plusieurs adresses IP Elastic entre des comptes AWS de la même Région AWS.

Brève description

Lorsque vous transférez une adresse IP Elastic, une liaison en deux étapes s’effectue entre le compte source et le compte de transfert. Le compte source peut être un compte AWS standard ou un compte AWS Organizations. Lorsque le compte source commence le transfert, le compte de transfert a 7 jours pour l’accepter. Dans le cas contraire, l’adresse IP Elastic revient à son propriétaire d’origine.

AWS n’informe pas le compte de transfert des demandes de transfert d’adresses IP Elastic en attente. Pour faciliter le transfert dans les délais impartis, le propriétaire du compte source doit informer le propriétaire du compte de transfert de cette demande.

Pour transférer plusieurs adresses IP Elastic à la fois, utilisez un script bash sous Linux.

Remarque : Pour transférer une adresse IP Elastic unique entre des comptes, consultez Comment transférer une adresse IP Elastic entre des comptes AWS d'une même région ?

Résolution

Remarque : Si vous recevez des erreurs lors de l'exécution des commandes de l'interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente de l'interface de la ligne de commande AWS.

Transférer les adresses IP (propriétaire du compte source)

1.    Vérifiez que vous avez configuré vos informations d'identification de l'interface de la ligne de commande AWS pour le compte source. Vérifiez également que vous disposez des autorisations AWS Identity and Access Management (IAM) pour autoriser les appels d'API ec2:DescribeAddresses et ec2:EnableAddressTransfer.

2.    Ajoutez les adresses IP Elastic à un fichier texte, à raison d'une adresse par ligne. Dans l'exemple de script bash suivant, ce fichier texte est nommé eips.txt.

3.    Créez un script bash similaire à l'exemple suivant, nommé EIPTransfer.sh :

#! /bin/bash  

ARRAY=()  
while read line  
do  
    ARRAY+=($line)  
done < $1  

now_start="$(date)"  
echo "Starting the loop to enable transfer of the provided EIPs in Region: $2 from AWS account: $3 to AWS account: $4 at $now_start" >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt  

for i in "${ARRAY[@]}"  
do  
    echo "Trying to get the AllocationId for ${i}" >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt  
    EIPAlloc=`aws ec2 describe-addresses --filters "Name=public-ip,Values=${i}" --query "Addresses[].AllocationId" --region $2 --output text`  

    if [[ "$EIPAlloc" == *"eipalloc"* ]]; then  
        echo "Trying to enable transfer for ${i} with allocation-id $EIPAlloc" >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt  
        aws ec2 enable-address-transfer --allocation-id ${EIPAlloc} --transfer-account-id $4 --region $2 --output text >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt 2>&1  
    else  
        echo "No allocation-id found for EIP ${i}" >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt  
    fi  

done  

now_end="$(date)"  
echo "All done! Exiting the script at $now_end!" >> EIPTransfer-results-"`date +"%d-%m-%Y"`".txt  

## usage sh EIPTransfer.sh eips.txt xx-region-y srcaccount dstaccount

4.    Pour exécuter ce script, exécutez la commande suivante :

sh EIPTransfer.sh eips.txt xx-region-y srcaccount dstaccount

5.    Consultez le journal d'EIPTransfer pour détecter d'éventuelles erreurs. Le journal s'appelle EIPTransfer-results-DATE.txt.

Remarque : Dans ce nom de fichier, DATE est la date à laquelle vous exécutez le script.

Accepter le transfert (titulaire du compte de transfert)

1.    Vérifiez que vous avez configuré vos informations d'identification de l'interface de la ligne de commande AWS pour le compte de transfert. Vérifiez également que vous disposez des autorisations IAM nécessaires pour autoriser l'appel d'API ec2:AcceptAddressTransfer.

2.    Ajoutez les adresses IP Elastic à un fichier texte, à raison d'une adresse par ligne. Dans l'exemple de script bash suivant, ce fichier texte est nommé eips.txt.

3.    Créez un script bash similaire à l'exemple suivant, nommé EIPAccept.sh :

#! /bin/bash  

ARRAY=()  
while read line  
do  
    ARRAY+=($line)  
done < $1  

now_start="$(date)"  
echo "Starting the loop to accept transfer of the provided EIPs in Region: $2 from AWS account: $3 to AWS account: $4 at $now_start" >> EIPAccept-results-"`date +"%d-%m-%Y"`".txt  

for i in "${ARRAY[@]}"  
do  
    echo "Trying to accept the EIP transfer for ${i} from account $3" >> EIPAccept-results-"`date +"%d-%m-%Y"`".txt  
    aws ec2 accept-address-transfer --address ${i} --region $2 --output text >> EIPAccept-results-"`date +"%d-%m-%Y"`".txt 2>&1  
done  

now_end="$(date)"  
echo "All done! Exiting the script at $now_end!" >> EIPAccept-results-"`date +"%d-%m-%Y"`".txt  

## usage sh EIPAccept.sh eips.txt xx-region-y srcaccount dstaccount

4.    Pour exécuter ce script, exécutez la commande suivante :

 sh EIPAccept.sh eips.txt xx-region-y srcaccount dstaccount

5.    Consultez le journal EIPAccept pour détecter d'éventuelles erreurs. Ce journal s'appelle EIPAccept-results-DATE.txt.

Remarque : Dans ce nom de fichier, DATE est la date à laquelle vous exécutez le script.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an