Mappatura degli obiettivi per un'automazione - AWS Systems Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Mappatura degli obiettivi per un'automazione

Utilizza il parametro Targets per definire velocemente quali risorse possono essere destinate a un'automazione. Ad esempio, se desideri eseguire un'automazione che riavvia le istanze gestite, anziché selezionare manualmente dozzine di istanze nella console o digitarle IDs in un comando, puoi indirizzare le istanze specificando i tag Amazon Elastic Compute Cloud (AmazonEC2) con il parametro. Targets

Quando esegui un'automazione che utilizza una destinazione, AWS Systems Manager crea un'automazione secondaria per ogni destinazione. Ad esempio, se scegli come target i volumi Amazon Elastic Block Store (AmazonEBS) specificando tag e tali tag si risolvono in 100 EBS volumi Amazon, Systems Manager crea 100 automazioni secondarie. L'automazione padre risulta completa quando tutte le automazioni figlio raggiungono lo stato finale.

Nota

Qualsiasi opzione input parameters specificata nel runtime (tempo di esecuzione) (nella sezione Input parameters (Parametri di input) della console oppure utilizzando l'opzione parameters nella riga di comando) viene elaborata automaticamente da tutte le automazioni figlio.

Per definire le risorse come destinazione per un'automazione, puoi usare i tag, Resource Groups, e i valori dei parametri. Puoi inoltre utilizzare l'opzione TargetMaps per utilizzare come destinazione più valori di parametro nella riga di comando o in un file. La sezione seguente descrive con maggiore dettaglio ciascuna di queste opzioni.

Definizione di un tag come destinazione

Puoi specificare un singolo tag come destinazione di un'automazione. Molte AWS risorse supportano i tag, tra cui istanze Amazon Elastic Compute Cloud (AmazonEC2) e Amazon Relational Database Service (RDSAmazon), volumi e snapshot Amazon Elastic Block Store (EBSAmazon), Resource Groups e bucket Amazon Simple Storage Service (Amazon S3), solo per citarne alcuni. Puoi eseguire rapidamente l'automazione delle tue AWS risorse scegliendo come target un tag. Un tag è una coppia chiave-valore, ad esempio Operating_System:Linux oppure Department:Finance. Se assegni un nome specifico a una risorsa, puoi anche possibile utilizzare la parola "Name" (Nome) come chiave e il nome della risorsa come valore.

Quando specifichi un tag come deatinazione di un'automazione, devi specificare anche un parametro di destinazione. Il parametro di destinazione utilizza l'opzione TargetParameterName. Scegliendo un parametro di destinazione, definisci il tipo di risorsa su cui viene eseguita l'automazione. Il parametro di destinazione specificato con il tag deve essere un parametro valido definito nel runbook. Ad esempio, se desideri indirizzare dozzine di EC2 istanze utilizzando i tag, scegli il parametro InstanceId target. Quando scegli questo parametro, definisci le instances (istanze) come il tipo di risorsa per l'automazione. Durante la creazione di un runbook personalizzato è necessario specificare, per Tipo di target, il valore /AWS::EC2::Instance per garantire che vengano utilizzate solo le istanze. Altrimenti, verranno definite come target tutte le risorse con lo stesso tag. Quando definisci come destinazione le istanze con un tag, potrebbero essere incluse anche le istanze terminate.

Lo screenshot seguente utilizza il runbook di AWS-DetachEBSVolume. Il parametro di destinazione logico è VolumeId.

Utilizzo di un tag come destinazione per un'automazione di Systems Manager

Il runbook di AWS-DetachEBSVolume include anche una proprietà speciale chiamata Target type (Tipo di destinazione), impostata su /AWS::EC2::Volume. Ciò significa che se la coppia tag-chiave Finance:TestEnv restituisce diversi tipi di risorse (ad esempio, EC2 istanze, volumi AmazonEBS, EBS istantanee Amazon), verranno utilizzati solo EBS i volumi Amazon.

Importante

I nomi dei parametri di destinazione fanno distinzione tra maiuscole e minuscole. Se esegui automazioni utilizzando AWS Command Line Interface (AWS CLI) o AWS Tools for Windows PowerShell, devi inserire il nome del parametro di destinazione esattamente come definito nel runbook. In caso contrario, il sistema restituisce un errore di InvalidAutomationExecutionParametersException. È possibile utilizzare l'DescribeDocumentAPIoperazione per visualizzare le informazioni sui parametri di destinazione disponibili in un runbook specifico. Di seguito è riportato un esempio di comando di AWS CLI che fornisce informazioni su documento di AWS-DeleteSnapshot non valido.

aws ssm describe-document \ --name AWS-DeleteSnapshot

Di seguito sono riportati alcuni AWS CLI comandi di esempio che indirizzano le risorse utilizzando un tag.

Esempio 1: targeting di un tag utilizzando una coppia chiave-valore per riavviare le istanze Amazon EC2

Questo esempio riavvia tutte le EC2 istanze Amazon contrassegnate con una chiave Department e un valore di. HumanResources Il parametro target utilizza il InstanceIdparametro del runbook. L'esempio utilizza un parametro aggiuntivo per eseguire l'automazione utilizzando un ruolo di servizio di automazione, definito anche assume role (ruolo presunto).

aws ssm start-automation-execution \ --document-name AWS-RestartEC2Instance \ --targets Key=tag:Department,Values=HumanResources \ --target-parameter-name InstanceId \ --parameters "AutomationAssumeRole=arn:aws:iam::111122223333:role/AutomationServiceRole"

Esempio 2: targeting di un tag utilizzando una coppia chiave-valore per eliminare gli snapshot di Amazon EBS

L'esempio seguente utilizza il runbook di AWS-DeleteSnapshot per eliminare tutti gli snapshot con la chiave Name (Nome) e il valore January2018Backups. Il parametro target utilizza il parametro. VolumeId

aws ssm start-automation-execution \ --document-name AWS-DeleteSnapshot \ --targets Key=tag:Name,Values=January2018Backups \ --target-parameter-name VolumeId

Targeting AWS Resource Groups

È possibile specificare un singolo gruppo di AWS risorse come obiettivo di un'automazione. Systems Manager crea un'automazione figlio per ogni oggetto nel gruppo di risorse di destinazione.

Ad esempio, supponiamo che uno dei tuoi Resource Groups si chiami atchedAMIs P. Questo gruppo di risorse include un elenco di 25 Amazon Machine Images (AMIs) Windows a cui vengono regolarmente applicate patch. Se esegui un'automazione che utilizza il runbook di AWS-CreateManagedWindowsInstance e che ha questo gruppo di risorse come destinazione, Systems Manager creerà un'automazione figlio per ciascuna delle 25 AMIs. Ciò significa che, prendendo di mira il P atchedAMIs Resource Group, l'automazione crea 25 istanze da un elenco di patch. AMIs L'automazione padre risulta completa quando tutte le automazioni figlio hanno ultimato l'elaborazione o hanno raggiunto lo stato finale.

Il AWS CLI comando seguente si applica all'esempio di P atchAMIs Resource Group. Il comando accetta il AmiIdparametro per l'--target-parameter-nameopzione. Il comando non include un parametro aggiuntivo che definisce il tipo di istanza da creare da ciascuna AMI. Il AWS-CreateManagedWindowsInstance runbook utilizza per impostazione predefinita il tipo di istanza t2.medium, quindi questo comando creerebbe 25 istanze Amazon t2.medium per. EC2 Windows Server

aws ssm start-automation-execution \ --document-name AWS-CreateManagedWindowsInstance \ --targets Key=ResourceGroup,Values=PatchedAMIs \ --target-parameter-name AmiId

La seguente console di esempio utilizza un gruppo di risorse denominato t2-micro-instances.

Individuazione di un gruppo di AWS risorse con un'automazione Systems Manager

Definizione dei valori di parametro come destinazione

È anche possibile definire come destinazione un valore di parametro. A tale scopo, devi specificare ParameterValues come chiave e quindi inserire il valore specifico di risorsa in cui vuoi eseguire l'automazione. Se specifichi più valori, Systems Manager esegue un'automazione figlio su ciascun valore specificato.

Supponiamo, ad esempio, che il runbook includa un parametro InstanceID (IDistanza). Se definisci i valori del parametro InstanceID (IDistanza) come destinazione quando esegui l'automazione, Systems Manager esegue un'automazione figlio per ogni valore di ID di istanza specificato. L'automazione padre risulta completa quando l'automazione termina l'esecuzione di ciascuna istanza specificata oppure se l'automazione ha esito negativo. Puoi definire come destinazione un massimo di 50 valori di parametro.

Nell'esempio seguente viene utilizzato il runbook di AWS-CreateImage. Il nome del parametro di destinazione specificato è InstanceId. La chiave utilizza ParameterValues. I valori sono due EC2 istanze AmazonIDs. Questo comando crea un'automazione per ogni istanza, che genera un'AMI da ciascuna istanza.

aws ssm start-automation-execution --document-name AWS-CreateImage \ --target-parameter-name InstanceId \ --targets Key=ParameterValues,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE
Nota

AutomationAssumeRole non è un parametro valido. Non scegliere questo elemento quando si esegue un'automazione che definisce un valore di parametro come destinazione.

Definizione delle mappe di valori di parametro come destinazione

L'opzione TargetMaps potenzia la capacità di definire ParameterValues come destinazione. Puoi inserire una serie di valori di parametro utilizzando TargetMaps nella riga di comando. Puoi infine specificare un massimo di 50 valori di parametro nella riga di comando. Se desideri eseguire comandi che specificano più di 50 valori di parametri, puoi inserire i valori in un JSON file. Potrai quindi richiamare il file dalla riga di comando.

Nota

L'opzione TargetMaps non è supportata nella console.

Usa il seguente formato per specificare più valori di parametro mediante l'opzione TargetMaps in un comando. Sostituisci ciascuno example resource placeholder con le tue informazioni.

aws ssm start-automation-execution \ --document-name runbook name \ --target-maps “parameter=value, parameter 2=value, parameter 3=value” “parameter 4=value, parameter 5=value, parameter 6=value

Se desiderate inserire più di 50 valori di parametro per l'TargetMapsopzione, specificate i valori in un file utilizzando il seguente JSON formato. L'utilizzo di un JSON file migliora anche la leggibilità quando si forniscono più valori di parametro.

[ {“parameter”: "value", “parameter 2”: "value", “parameter 3”: "value"}, {“parameter 4”: "value", “parameter 5”: "value", "parameter 6": "value"} ]

Salva il file con l'estensione .json. Puoi chiamare il file utilizzando il comando seguente. Sostituisci ciascuno example resource placeholder con le tue informazioni.

aws ssm start-automation-execution \ --document-name runbook name \ –-parameters input parameters \ --target-maps path to file/file name.json

Puoi inoltre scaricare il file da un bucket Amazon Simple Storage Service (Amazon S3), a condizione che tu disponga dell'autorizzazione necessaria per leggere i dati dal bucket. Utilizza il seguente formato di comando. Sostituisci ciascuno example resource placeholder con le tue informazioni.

aws ssm start-automation-execution \ --document-name runbook name \ --target-maps http://amzn-s3-demo-bucket.s3.amazonaws.com/file_name.json

Ecco uno scenario di esempio che illustra l'opzione TargetMaps. In questo scenario, un utente desidera creare EC2 istanze Amazon di tipi diversi tra loroAMIs. Per eseguire questa operazione, l'utente crea un runbook denominato AMI _Testing. Questo runbook definisce due parametri di input: instanceType e imageId.

{ "description": "AMI Testing", "schemaVersion": "0.3", "assumeRole": "{{assumeRole}}", "parameters": { "assumeRole": { "type": "String", "description": "Role under which to run the automation", "default": "" }, "instanceType": { "type": "String", "description": "Type of EC2 Instance to launch for this test" }, "imageId": { "type": "String", "description": "Source AMI id from which to run instance" } }, "mainSteps": [ { "name": "runInstances", "action": "aws:runInstances", "maxAttempts": 1, "onFailure": "Abort", "inputs": { "ImageId": "{{imageId}}", "InstanceType": "{{instanceType}}", "MinInstanceCount": 1, "MaxInstanceCount": 1 } } ], "outputs": [ "runInstances.InstanceIds" ] }

L'utente specifica quindi i seguenti valori di parametro di destinazione in un file denominato AMI_instance_types.json.

[ { "instanceType" : ["t2.micro"], "imageId" : ["ami-b70554c8"] }, { "instanceType" : ["t2.small"], "imageId" : ["ami-b70554c8"] }, { "instanceType" : ["t2.medium"], "imageId" : ["ami-cfe4b2b0"] }, { "instanceType" : ["t2.medium"], "imageId" : ["ami-cfe4b2b0"] }, { "instanceType" : ["t2.medium"], "imageId" : ["ami-cfe4b2b0"] } ]

L'utente può eseguire l'automazione e creare le cinque EC2 istanze definite in AMI_instance_types.json eseguendo il comando seguente.

aws ssm start-automation-execution \ --document-name AMI_Testing \ --target-parameter-name imageId \ --target-maps file:///home/TestUser/workspace/runinstances/AMI_instance_types.json

Targeting a tutte le istanze Amazon EC2

Puoi eseguire un'automazione su tutte le EC2 istanze Amazon nella versione corrente Account AWS e Regione AWS selezionando Tutte le istanze nell'elenco Target. Ad esempio, se desideri riavviare tutte le EC2 istanze Amazon tue Account AWS e quelle attuali Regione AWS, puoi scegliere il AWS-RestartEC2Instance runbook e quindi scegliere Tutte le istanze dall'elenco Target.

Targeting a tutte le EC2 istanze Amazon per un runbook

Dopo aver scelto All instances (Tutte le istanze), Systems Manager popola il campo Instance (Istanza) con un asterisco (*) e rende il campo non disponibile per le modifiche (il campo è disabilitato). Systems Manager rende inoltre il InstanceIdcampo nel campo Parametri di input non disponibile per le modifiche. Rendere questi campi non disponibili per le modifiche è un comportamento previsto se si sceglie di definire tutte le istanze come destinazione.