As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Gerenciar ativos
AWS DevOps O agente armazena a configuração e o material de referência de um Espaço do Agente como ativos, os recursos gerenciados pelo cliente que moldam o que o agente sabe e como ele se comporta. Habilidades, AGENTS.md arquivos e anexos são todos ativos, e você pode criar, ler, atualizar e excluí-los programaticamente por meio da API Asset.
Para configurar o que o AWS DevOps Agente sabe e como ele se comporta, gerencie ativos no seu Espaço do Agente. Este tópico aborda o modelo de ativo, as permissões do IAM e os metadados que cada tipo de ativo espera. Use a AWS CLI, o AWS SDK para Python (Boto3) ou AWS CloudFormation para gerenciar ativos de ponta a ponta. Para obter uma visão geral conceitual das habilidades em si, consulteDevOps Habilidades do agente. Para obter conhecimento gerado por agentes que você mesmo não cria, consulte. Habilidades aprendidas
Quando usar a API Asset
O Operator Web App é a maneira mais rápida de criar uma única habilidade ou fazer upload de um AGENTS.md arquivo de forma interativa. A API Asset expõe as mesmas operações de forma programática para que scripts e automação possam gerenciar ativos sem passar pelo aplicativo Web. Os motivos comuns para ligar diretamente para a API Asset incluem:
Criação ou atualização de um ativo a partir de um script, terminal ou notebook em vez do aplicativo Web.
Bulk-loading um conjunto inicial de habilidades ou AGENTS.md arquivos em um novo Agent Space.
Ler o conteúdo de um ativo para fazer backup ou comparar versões.
Cada operação na API Asset é exposta por meio da AWS CLI como aws devops-agent <operation> e por meio dos AWS SDKs como cliente. devops-agent
Operações da API de ativos
A API Asset expõe as seguintes operações. Cada linha lista a ação do IAM que você precisa conceder para chamar a operação e o recurso ao qual a ação se aplica. Cada ação reside no aidevops: namespace e, exceto porListAssetTypes, se aplica a um recurso do Agent Space do formulário. arn:aws:aidevops:<region>:<account-id>:agentspace/<agentSpaceId> Para obter informações mais aidevops: amplas sobre permissões, consulteDevOps Permissões do agente IAM.
| Operation | Description | Ação do IAM | Recurso |
|---|---|---|---|
ListAssetTypes |
Liste os tipos de ativos suportados pelo AWS DevOps Agente. | aidevops:ListAssetTypes |
* |
CreateAsset |
Crie um novo ativo em um Espaço do Agente (habilidade AGENTS.md, anexo, agente personalizado, armazenamento de memória, memória, perfil de teste ou feedback). | aidevops:CreateAsset |
Espaço do agente |
GetAsset |
Recupere os metadados e as informações da versão de um ativo. | aidevops:GetAsset |
Espaço do agente |
UpdateAsset |
Atualize os metadados ou o conteúdo de um ativo existente. | aidevops:UpdateAsset |
Espaço do agente |
DeleteAsset |
Exclua um ativo e todos os seus arquivos de um Espaço do Agente. | aidevops:DeleteAsset |
Espaço do agente |
ListAssets |
Liste ativos em um Agent Space, com filtragem opcional por tipo de ativo. | aidevops:ListAssets |
Espaço do agente |
ListAssetVersions |
Liste as versões históricas de um ativo. | aidevops:ListAssetVersions |
Espaço do agente |
GetAssetContent |
Baixe o conteúdo completo de um ativo como um pacote zip. | aidevops:GetAssetContent |
Espaço do agente |
CreateAssetFile |
Adicione um novo arquivo a um ativo existente. | aidevops:CreateAssetFile |
Espaço do agente |
GetAssetFile |
Recupere um único arquivo de um ativo pelo caminho. | aidevops:GetAssetFile |
Espaço do agente |
UpdateAssetFile |
Substitua o conteúdo ou os metadados de um arquivo existente em um ativo. | aidevops:UpdateAssetFile |
Espaço do agente |
DeleteAssetFile |
Remova um único arquivo de um ativo. | aidevops:DeleteAssetFile |
Espaço do agente |
ListAssetFiles |
Liste os arquivos em um ativo. | aidevops:ListAssetFiles |
Espaço do agente |
Políticas de exemplo do IAM
A política a seguir concede acesso total de gerenciamento aos ativos em um único Espaço do Agente:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "aidevops:CreateAsset", "aidevops:GetAsset", "aidevops:UpdateAsset", "aidevops:DeleteAsset", "aidevops:ListAssets", "aidevops:ListAssetVersions", "aidevops:GetAssetContent", "aidevops:CreateAssetFile", "aidevops:GetAssetFile", "aidevops:UpdateAssetFile", "aidevops:DeleteAssetFile", "aidevops:ListAssetFiles" ], "Resource": "arn:aws:aidevops:us-east-1:111122223333:agentspace/8f6187a7-0388-4926-8217-3a0fe32f757c" }, { "Effect": "Allow", "Action": "aidevops:ListAssetTypes", "Resource": "*" } ] }
A política a seguir concede acesso somente para leitura aos ativos em um único Espaço do Agente:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "aidevops:GetAsset", "aidevops:ListAssets", "aidevops:ListAssetVersions", "aidevops:GetAssetContent", "aidevops:GetAssetFile", "aidevops:ListAssetFiles" ], "Resource": "arn:aws:aidevops:us-east-1:111122223333:agentspace/8f6187a7-0388-4926-8217-3a0fe32f757c" }, { "Effect": "Allow", "Action": "aidevops:ListAssetTypes", "Resource": "*" } ] }
Tipos de ativo
Cada ativo tem uma assetType string que identifica o tipo de recurso que é. Você pode criar oito tipos de ativos por meio da API de ativos: skill agents_md attachmentcustom_agent,memory_store,memory,test_profile,, feedback e. As seções a seguir descrevem cada tipo. Você também pode chamar ListAssetTypes para recuperar os identificadores de tipo em tempo de execução.
Cada ativo carrega um objeto metadata JSON de formato livre que descreve o recurso. As chaves internas metadata usam snake_case (por exemplo,,agent_types). skill_type As chaves externasmetadata, no nível superior do corpo da solicitação, usam camelCase (por exemplo,, agentSpaceIdassetType,clientToken). As metadata chaves obrigatórias e opcionais dependem do tipo de ativo, conforme descrito nas seções a seguir.
Quando você chama UpdateAsset ouUpdateAssetFile, o serviço aplica a semântica PATCH ametadata: as chaves que você inclui são substituídas e as chaves que você omite mantêm seus valores armazenados. Você não pode alterar o ativo assetType após sua criação.
habilidade
Um skill ativo empacota instruções e material de referência que o agente carrega quando relevante. Uma habilidade simples é um único SKILL.md arquivo; uma habilidade complexa é um pacote zip que contém um SKILL.md arquivo e references/ assets/ diretórios opcionais.
metadataPropriedades necessárias:
name (string) — Um identificador exclusivo para a habilidade. Somente letras minúsculas, números e hífens, de 1 a 64 caracteres. Não deve começar nem terminar com um hífen. Necessário somente para habilidades simples. Para uploads em zip, o serviço lê a
namepartir doSKILL.mdfrontmatter e qualquer valor fornecido aqui é ignorado.description (string) — Uma explicação de 1 a 1024 caracteres de quando o agente deve usar a habilidade. Necessário somente para habilidades simples. Para uploads em zip, o serviço lê a
descriptionpartir doSKILL.mdfrontmatter e qualquer valor fornecido aqui é ignorado.agent_types (matriz de strings) — Um ou mais tipos de agentes aos quais essa habilidade se aplica. Use
["GENERIC"]para tornar a habilidade disponível para todos os tipos de agentes. Outros valores incluemCHATINCIDENT_TRIAGEINCIDENT_RCA,INCIDENT_MITIGATION,PREVENTION,RELEASE_READINESS_REVIEW,RELEASE_TESTINGe. OGENERICvalor não pode ser combinado com outros valores.
metadataPropriedades opcionais:
skill_type (string) — O padrão é.
USERA API Asset permite apenas habilidades criadas pelo cliente, então o único valor aceito é.USERO serviço rejeita solicitações definidas comoskill_typeLEARNED, que são reservadas para habilidades geradas pelo próprio agente.status (string) — Estado de ativação da habilidade. Os valores aceitos são
ACTIVEeINACTIVE(somente em maiúsculas). O padrão éACTIVE. As habilidades inativas permanecem no Espaço do Agente, mas não são carregadas pelo agente durante as investigações ou o bate-papo. UseUpdateAssetcommetadata.statuspara desativar ou reativar uma habilidade sem excluí-la. As habilidades são o único tipo de ativo que oferece suporte à ativação; ostatuscampo é ignorado em todos os outros tipos de ativos. Consulte Ativando e desativando habilidades para ver um exemplo prático.enable_tools (array of strings) — Uma lista de identificadores de ferramentas que o agente pode chamar ao carregar essa habilidade.
Exemplometadata:
{ "name": "rds-performance-investigation", "description": "Investigation procedures for RDS performance issues including connection exhaustion, slow queries, replication lag, and storage capacity. Use this skill when investigating database latency, connection errors, or read/write performance degradation.", "agent_types": ["GENERIC"] }
Limites: os uploads de Zip não devem exceder 6 MB. Um Agent Space pode conter até 200 habilidades criadas pelo usuário.
agents_md
Um agents_md ativo é um arquivo de remarcação contendo instruções de agente permanente para um tipo específico de agente. O agente carrega a correspondência AGENTS.md no início de cada tarefa. Para obter mais informações sobre as instruções do agente, consulteInstruções do agente.
metadataPropriedades necessárias:
agent_type (string) — O tipo de agente ao qual o AGENTS.md arquivo se aplica. Os valores válidos são
GENERICCHATINCIDENT_TRIAGEINCIDENT_RCA,INCIDENT_MITIGATION,PREVENTION,RELEASE_READINESS_REVIEW,,RELEASE_TESTINGe.
Exemplometadata:
{ "agent_type": "INCIDENT_TRIAGE" }
Limites: Cada Espaço do Agente pode conter no máximo um AGENTS.md poragent_type. O conteúdo do arquivo deve ser markdown (text/markdown) e não deve exceder 25 KB.
anexo
Um attachment ativo armazena um arquivo binário ou de texto que o agente pode consultar durante as investigações, por exemplo, um diagrama de arquitetura, um runbook PDF ou um arquivo de log de amostra.
metadataPropriedades necessárias:
filename (string) — O nome do arquivo original, incluindo o nome base e qualquer extensão (por exemplo,
topology.png).extension (string) — A extensão do arquivo sem o ponto inicial (por exemplo,
png,pdf,csv).tamanho (número) — O tamanho do arquivo em bytes.
Exemplometadata:
{ "filename": "topology.png", "extension": "png", "size": 184320 }
Limites: O tamanho total de todos os anexos em um Espaço do Agente não pode exceder 10 GB.
agente personalizado
Um custom_agent ativo define uma configuração de agente especializado com um conjunto selecionado de ferramentas e habilidades. Use um agente personalizado para definir o escopo do agente para um fluxo de trabalho específico ou conjunto de recursos.
metadataPropriedades necessárias:
name (string) — Um identificador exclusivo para o agente personalizado. Somente letras minúsculas, números e hífens, de 1 a 64 caracteres. Não deve começar nem terminar com um hífen.
metadataPropriedades opcionais:
tools (matriz de cadeias de caracteres) — Os identificadores de ferramentas que o agente personalizado pode usar. O padrão é uma lista vazia quando omitida.
skills (matriz de strings) — Os identificadores de habilidades que o agente personalizado carrega. O padrão é uma lista vazia quando omitida.
Exemplometadata:
{ "name": "rds-firefighter", "tools": ["cloudwatch:GetMetricData", "rds:DescribeDBInstances"], "skills": ["rds-performance-investigation"] }
armazenamento_memória
Um memory_store ativo é um contêiner que agrupa arquivos de memória relacionados. O agente lê o nome e a descrição da loja para decidir se quer abri-la e listar as memórias que estão lá dentro. Memórias e armazenamentos de memória suportam a memória do agente. Para obter mais informações sobre memórias, consulteDevOps Memórias do agente.
Crie memórias em duas etapas. Primeiro, crie a memory_store. Em seguida, crie cada um memory dentro dele, conforme descrito na memória.
metadataPropriedades necessárias:
name (string) — Um identificador exclusivo para o armazenamento de memória. Somente letras minúsculas, números e hífens, de 1 a 128 caracteres. Não deve começar nem terminar com um hífen.
description (string) — Uma descrição de 1 a 1024 caracteres do que a loja tem. O agente o usa para decidir se deseja abrir a loja.
metadataPropriedades opcionais:
agent_types (array of strings) — Os tipos de agentes principais que podem ver a loja. Use
["GENERIC"]para tornar a loja visível para todos os tipos de agentes.
Exemplometadata:
{ "name": "incident-runbooks", "description": "Operational memories about past incidents and their resolutions.", "agent_types": ["GENERIC"] }
memória
Um memory ativo é um arquivo de memória individual que pertence a um armazenamento de memória. O agente lê o nome e a descrição da memória para decidir se quer ler o arquivo completo. Crie memory_store primeiro o pai e, em seguida, defina memory_store_id na memória o ID do ativo da loja.
metadataPropriedades necessárias:
name (string) — Um identificador para a memória, escrito como um caminho
/separado por segmentos minúsculos de kebab, de 1 a 255 caracteres (por exemplo,).databases/rds-failoverdescription (string) — Uma descrição de 1 a 1024 caracteres do que a memória contém.
memory_store_id (string) — O ID do ativo do armazenamento de memória ao qual essa memória pertence.
metadataPropriedades opcionais:
expires_at (número) — Um prazo de retenção, em segundos de época. Quando definido, o serviço exclui a memória automaticamente após o término do prazo (normalmente em 48 horas). Omita essa propriedade para manter a memória até que você a exclua.
Exemplometadata:
{ "name": "databases/rds-failover", "description": "Steps that resolved the RDS failover incident in June.", "memory_store_id": "a1b2c3d4-5678-90ab-cdef-example11111" }
perfil_teste
Um test_profile ativo armazena uma configuração reutilizável para uma execução de teste de versão, incluindo o tipo de teste a ser realizado e o endpoint de destino.
metadataPropriedades necessárias:
test_agent_type (string) — O tipo de teste que esse perfil executa. Os valores válidos são
releaseUiTestingereleaseApiTesting.target_url (string) — A URL que a execução do teste visa.
metadataPropriedades opcionais:
name (string) — Um identificador legível por humanos para o perfil de teste. Somente letras minúsculas, números e hífens, de 1 a 128 caracteres. Não deve começar nem terminar com um hífen.
description (string) — Uma descrição de 1 a 1024 caracteres do que o perfil de teste cobre.
test_personas (array of strings) — As personas a serem exercitadas durante a execução do teste. Os valores válidos são
guesteauthenticated.api_spec (string) — Uma especificação de API para a execução do teste. Relevante para
releaseApiTesting.credentials_secret_arn (string) — O ARN de um segredo do AWS Secrets Manager contendo credenciais para a execução do teste.
Exemplometadata:
{ "name": "checkout-api-tests", "description": "Release API tests for the checkout service.", "test_agent_type": "releaseApiTesting", "target_url": "https://api.example.com", "test_personas": ["guest", "authenticated"], "api_spec": "openapi: 3.0.0", "credentials_secret_arn": "arn:aws:secretsmanager:us-east-1:111122223333:secret:checkout-creds" }
feedback
Um feedback ativo registra o feedback fornecido pelo cliente sobre a execução de um único agente. Use recursos de feedback para capturar veredictos e notas que os canais de avaliação posteriores podem agregar.
metadataPropriedades necessárias:
agent_types (matriz de strings) — Os tipos de agentes que produziram a execução. Deve conter pelo menos um valor (por exemplo,
INCIDENT_TRIAGE).
metadataPropriedades opcionais:
execution_id (string) — A execução à qual esse feedback está associado. Ative isso
CreateAsset; não pode ser alterado porUpdateAsset.
Exemplometadata:
{ "execution_id": "b2c3d4e5-6789-01ab-cdef-example22222", "agent_types": ["INCIDENT_TRIAGE"] }
Conteúdo do ativo: arquivo ou zip
Cada CreateAsset solicitação inclui um content objeto que contém os bytes que o ativo armazena. O formato do content depende se você está carregando um único arquivo ou um pacote zip:
Arquivo de texto único —
content.file.body.textcarrega até 1,5 MB de UTF-8 texto. Use isso para habilidades e AGENTS.md arquivos simples.
json { "content": { "file": { "path": "SKILL.md", "body": { "text": "# Skill\n\nInstructions go here." } } } }
Arquivo binário único —
content.file.body.bytescarrega até 6 MB de conteúdo binário codificado em base64. Use isso para anexos como imagens ou PDFs. Como o blob está aninhado dentrocontentda união, codifique o arquivo em base64 com antecedência e envie a solicitação com--cli-input-json(consulte Criar uma habilidade a partir de um arquivo binário para ver um exemplo prático).
json { "content": { "file": { "path": "topology.png", "body": { "bytes": "<base64-encoded bytes>" } } } }
Pacote Zip —
content.zip.zipFilecarrega um arquivo zip codificado em base64 de até 6 MB. Use isso para habilidades que incluemSKILL.mdmais arquivos adicionais em umassets/diretórioreferences/ou.
json { "content": { "zip": { "zipFile": "<base64-encoded zip bytes>" } } }
Para adicionar, substituir ou excluir arquivos individuais dentro de um ativo existente sem recarregar o pacote inteiroCreateAssetFile, use e. UpdateAssetFile DeleteAssetFile
Gerenciando uma habilidade de ponta a ponta
O passo a passo a seguir cria uma habilidade de três maneiras diferentes (de um único arquivo de texto, de um arquivo binário e de um pacote zip) e, em seguida, exercita as operações de leitura, atualização e exclusão. 8f6187a7-0388-4926-8217-3a0fe32f757cSubstitua pelo seu Agent Space ID.
Crie uma habilidade a partir de um único arquivo de texto
Esse é o caminho mais simples: um único SKILL.md arquivo carregado em linha. Como o upload contém exatamente um arquivo de texto, você deve fornecer name e description inserirmetadata.
AWS CLI:
aws devops-agent create-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-type skill \ --metadata '{ "name": "rds-performance-investigation", "description": "Investigation procedures for RDS performance issues. Use when investigating database latency, connection errors, or query timeouts.", "agent_types": ["GENERIC"] }' \ --content '{ "file": { "path": "SKILL.md", "body": { "text": "# RDS Performance Investigation\n\nUse this skill when customers report database latency, connection errors, query timeouts, or read/write performance degradation." } } }'
Python (Boto3):
import boto3 client = boto3.client("devops-agent") response = client.create_asset( agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c", assetType="skill", metadata={ "name": "rds-performance-investigation", "description": ( "Investigation procedures for RDS performance issues. " "Use when investigating database latency, connection errors, " "or query timeouts." ), "agent_types": ["GENERIC"], }, content={ "file": { "path": "SKILL.md", "body": { "text": ( "# RDS Performance Investigation\n\n" "Use this skill when customers report database latency, " "connection errors, query timeouts, or read/write " "performance degradation." ) }, } }, ) asset_id = response["asset"]["assetId"]
Crie uma habilidade a partir de um arquivo binário
Use um upload binário quando o conteúdo da habilidade não for UTF-8 texto. O exemplo abaixo carrega um PDF pré-renderizado como o corpo da habilidade. Como o corpo da solicitação contém um blob codificado em base64 aninhado dentro da content união, forneça a solicitação de um arquivo JSON --cli-input-json e codifique o blob com antecedência.
O -w 0 sinalizador abaixo diz base64 ao GNU que emita o blob codificado em uma única linha; sem ele, o contorno de linha padrão de 76 caracteres insere novas linhas que produzem JSON inválido quando o blob é interpolado no heredoc. No macOS, use base64 -i ops-runbook.pdf (o BSD base64 não quebra por padrão).
Crie o corpo da solicitação:
base64 -w 0 ops-runbook.pdf > ops-runbook.b64 cat > create-skill.json <<EOF { "agentSpaceId": "8f6187a7-0388-4926-8217-3a0fe32f757c", "assetType": "skill", "metadata": { "name": "ops-runbook", "description": "Operations runbook covering on-call escalation paths.", "agent_types": ["GENERIC"] }, "content": { "file": { "path": "SKILL.pdf", "body": { "bytes": "$(cat ops-runbook.b64)" } } } } EOF
AWS CLI:
aws devops-agent create-asset --cli-input-json file://create-skill.json
Python (Boto3):
with open("ops-runbook.pdf", "rb") as f: body_bytes = f.read() response = client.create_asset( agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c", assetType="skill", metadata={ "name": "ops-runbook", "description": "Operations runbook covering on-call escalation paths.", "agent_types": ["GENERIC"], }, content={ "file": { "path": "SKILL.pdf", "body": {"bytes": body_bytes}, } }, )
Crie uma habilidade a partir de um pacote zip
Use um upload em zip quando a habilidade incluir mais de um arquivo, por exemplo, materiais e ativos de referência SKILL.md adicionais. Para uploads em zip, o serviço lê name e description usa o SKILL.md frontmatter, portanto, não os inclua. metadata
O layout do zip tem a seguinte aparência:
rds-performance-investigation.zip ├── SKILL.md ├── references/ │ └── rds-metrics-reference.md └── assets/ └── rds-investigation-flowchart.png
SKILL.mddeve incluir o frontmatter para que o serviço possa extrair o nome e a descrição:
--- name: rds-performance-investigation description: Investigation procedures for RDS performance issues including connection exhaustion, slow queries, replication lag, and storage capacity. Use this skill when investigating database latency, connection errors, or read/write performance degradation. --- # RDS Performance Investigation ...
Crie o corpo da solicitação:
base64 -w 0 rds-performance-investigation.zip > skill.zip.b64 cat > create-skill.json <<EOF { "agentSpaceId": "8f6187a7-0388-4926-8217-3a0fe32f757c", "assetType": "skill", "metadata": { "agent_types": ["GENERIC"] }, "content": { "zip": { "zipFile": "$(cat skill.zip.b64)" } } } EOF
AWS CLI:
aws devops-agent create-asset --cli-input-json file://create-skill.json
Python (Boto3):
with open("rds-performance-investigation.zip", "rb") as f: zip_bytes = f.read() response = client.create_asset( agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c", assetType="skill", metadata={"agent_types": ["GENERIC"]}, content={"zip": {"zipFile": zip_bytes}}, )
Importar uma habilidade de um repositório
Você pode criar uma habilidade importando-a diretamente de um diretório de GitHub repositório. AWS DevOps O agente busca o conteúdo da habilidade, extrai o nome e a descrição do SKILL.md frontmatter e cria a habilidade no seu Espaço do Agente. Isso permite gerenciar habilidades em controle de versão e importá-las ou sincronizá-las programaticamente.
Pré-requisitos:
Seu Agent Space deve ter uma GitHub conta associada. Consulte Conectando GitHub.
O diretório do repositório deve conter um SKILL.md arquivo válido com o frontmatter.
AWS CLI:
aws devops-agent create-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-type skill \ --metadata '{ "agent_types": ["GENERIC"] }' \ --content '{"sourceUrl": {"url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation"}}'
Python (Boto3):
response = client.create_asset( agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c", assetType="skill", metadata={"agent_types": ["GENERIC"]}, content={ "sourceUrl": { "url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation" } }, ) asset_id = response["asset"]["assetId"]
O serviço busca o conteúdo do diretório, lê o SKILL.md frontmatter de name e e importa todos description os arquivos. Não inclua name nem description inclua metadata — eles são extraídos automaticamente do frontmatter.
Sincronizando uma habilidade importada:
Para obter as alterações mais recentes do repositório, ligue paraUpdateAsset: content.sourceUrl
aws devops-agent update-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId> \ --content '{"sourceUrl": {"url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation"}}'
response = client.update_asset( agentSpaceId="8f6187a7-0388-4926-8217-3a0fe32f757c", assetId="<assetId>", content={ "sourceUrl": { "url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation" } }, )
A sincronização substitui totalmente o conteúdo da habilidade pelo estado atual do diretório do repositório. Os campos editáveis (status, tipos de agente) são preservados.
Visualizando a fonte de importação:
GetAssetretorna as informações de origem metadata.source para habilidades importadas pelo repositório:
{ "metadata": { "name": "rds-performance-investigation", "description": "Investigation procedures for RDS performance issues...", "source": { "url": "https://github.com/my-org/my-repo/tree/main/skills/rds-investigation", "lastSyncedAt": 1718467200 }, "agent_types": ["GENERIC"], "skill_type": "USER", "status": "ACTIVE" } }
Restrições:
Somente GitHub URLs são aceitos. Você pode apontar para um diretório contendo um SKILL.md (por exemplo,
https://github.com/org/repo/tree/main/skills/my-skill), que importa o diretório inteiro, incluindo arquivos de referência. Se o SKILL.md estiver na raiz do repositório, você também poderá vincular diretamente ao arquivo (por exemplo,https://github.com/org/repo/blob/main/SKILL.md), que importa somente o. SKILL.mdO diretório deve conter um SKILL.md frontmatter válido.
O tamanho total do diretório não deve exceder 6 MB e no máximo 100 arquivos.
content.sourceUrlé mutuamente exclusivo comcontent.fileecontent.zip—você não pode combiná-los na mesma solicitação.Uma atualização somente de metadados (sem
content) preserva a fonte de importação existente e não é buscada novamente no repositório.
Obter, listar, atualizar e excluir
Use GetAsset para recuperar um único ativo por ID:
aws devops-agent get-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId>
Use ListAssets para folhear todos os ativos em um Espaço do Agente:
aws devops-agent list-assets \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --max-results 50 aws devops-agent list-assets \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --max-results 50 \ --next-token <token>
Use UpdateAsset para alterar um ou mais metadata campos sem recarregar o conteúdo. As chaves que você omite mantêm seus valores existentes:
aws devops-agent update-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId> \ --metadata '{ "agent_types": ["INCIDENT_TRIAGE", "INCIDENT_RCA"] }'
Use ListAssetVersions para inspecionar o histórico de versões de um ativo. Cada UpdateAssetFile chamada UpdateAsset ou chamada bem-sucedida avança o número da versão do ativo:
aws devops-agent list-asset-versions \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId>
Use DeleteAsset para remover o ativo e todos os seus arquivos:
aws devops-agent delete-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId>
Adicionar um único arquivo a uma habilidade existente
Se você já criou uma habilidade a partir de um pacote zip e deseja adicionar um novo arquivo de referência, não precisa recarregar o pacote inteiro. UsoCreateAssetFile:
aws devops-agent create-asset-file \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId> \ --path references/troubleshooting.md \ --content '{ "text": "# Troubleshooting\n\nAdditional notes." }'
Para substituir o arquivo no local, use update-asset-file com os mesmos argumentos. Para removê-lo, usedelete-asset-file.
Ativando e desativando habilidades
As habilidades carregam um estado de ativação emmetadata.status. As novas habilidades são ACTIVE fornecidas por padrão e são carregadas pelo agente durante as investigações e o bate-papo. Você pode desativar uma habilidade para tirá-la da rotação sem excluí-la, por exemplo, enquanto investiga por que ela está produzindo resultados inesperados e reativá-la posteriormente.
Defina o estado inicial na criação incluindo metadata.status na CreateAsset solicitação:
aws devops-agent create-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-type skill \ --metadata '{ "name": "rds-performance-investigation", "description": "Investigation procedures for RDS performance issues.", "agent_types": ["GENERIC"], "status": "INACTIVE" }' \ --content '{ "file": { "path": "SKILL.md", "body": { "text": "# RDS Performance Investigation" } } }'
Desative uma habilidade existente comUpdateAsset. Como metadata é aplicado como uma atualização parcial, o envio status deixa apenas todos os outros campos intactos:
aws devops-agent update-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId> \ --metadata '{ "status": "INACTIVE" }'
Reative da mesma forma, com"status": "ACTIVE":
aws devops-agent update-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-id <assetId> \ --metadata '{ "status": "ACTIVE" }'
GetAssete ListAssets sempre inclua a entrada atual status dos ativos de habilidades, metadata para que você possa ler o estado de ativação ao vivo a qualquer momento.
O campo status diferencia maiúsculas de minúsculas. Somente ACTIVE e INACTIVE (maiúsculas) são aceitos. Qualquer outro valor falha com ValidationException a. A ativação se aplica somente às habilidades; a configuração metadata.status de qualquer outro tipo de ativo não tem efeito e o campo é removido da resposta.
Gerenciando ativos com AWS CloudFormation
Use a API Asset para mudanças interativas ou orientadas por script. Para gerenciar ativos de forma declarativa, modele-os como AWS::DevOpsAgent::Asset recursos em AWS CloudFormation. Com essa abordagem, você pode controlar a versão de seus ativos junto com sua outra infraestrutura, implantá-los por meio de um pipeline e reproduzi-los nos Agent Spaces. CloudFormation cria cada ativo como filho de um Agent Space principal, então um ativo que você define em um modelo é mapeado exatamente para o mesmo recurso que uma CreateAsset chamada produz.
Você gerencia todos os tipos de ativos por meio do mesmo AWS::DevOpsAgent::Asset recurso. Os tipos suportados são skill agents_mdattachment,custom_agent,memory_store, memorytest_profile,, feedback e. Somente o conteúdo AssetTypeMetadata,, e diferem de um tipo para o outro. Os exemplos a seguir criam uma habilidade e um agente personalizado; os outros tipos seguem a mesma forma, usando os metadados descritos em Tipos de #asset-types ativos.
A ferramenta AWS::DevOpsAgent: :Recurso de ativos
As propriedades do recurso são mapeadas diretamente para os campos de CreateAsset solicitação descritos anteriormente neste tópico:
| CloudFormation propriedade | Tipo | Está associado a | Observações |
|---|---|---|---|
AgentSpaceId |
String | agentSpaceId |
Obrigatório. Create-only—alterá-lo substitui o ativo. |
AssetType |
String | assetType |
Obrigatório. Create-only. O identificador do tipo de ativo — por exemplo, ou. skill custom_agent Qualquer tipo em tipos de ativos é válido. |
Metadata |
JSON | metadata |
O mesmo documento de metadados da API (para uma habilidade:name, descriptionagent_types, e opcionalmentestatus). Atualizado no local. |
Files |
Lista | content.file |
Arquivos embutidos, cada um com Path um ContentText ou outroContentBytes, além de opções por Metadata arquivo. Mutuamente exclusivo com Zip. |
Zip |
String | content.zip.zipFile |
Base64-encoded pacote zip. Mutuamente exclusivo com Files. |
AssetId |
String | asset.assetId |
Read-only. Recupere comFn::GetAtt. |
Arn |
String | asset.arn |
Read-only. O ARN do ativo, aninhado sob o Espaço do Agente principal. |
Version |
Inteiro | asset.version |
Read-only. Surge em cada atualização bem-sucedida. |
CreatedAt / UpdatedAt |
String | asset.createdAt / updatedAt |
Read-only carimbos de data/hora. |
Vale a pena destacar dois comportamentos antes de escrever um modelo:
AgentSpaceIdeAssetTypesão somente para criação. Alterar qualquer um deles substitui o ativo. CloudFormation cria um novo ativo com um novoAssetIdeArn, em seguida, exclui o antigo. Alterações de conteúdo e metadados atualizam o ativo existente em vigor.CloudFormation gerencia o ativo como um todo — seus metadados e seu conjunto completo de arquivos. Para alterar uma habilidade, edite o modelo e atualize a pilha. As operações que atuam em partes de um ativo não fazem parte do recurso e permanecem API-only. Isso inclui edições por arquivo (
CreateAssetFile,UpdateAssetFile,DeleteAssetFile) e histórico de versões (ListAssetVersions). Também inclui download de conteúdo (GetAssetContent) e importação e sincronização de repositórios (o tipo desourceUrlconteúdo). Para eles, use a AWS CLI ou um SDK conforme mostrado anteriormente neste tópico.
Crie uma habilidade
O modelo a seguir cria a rds-performance-investigation habilidade de arquivo único usada no passo a passo da AWS CLI. Ele usa a ID do Espaço do Agente principal como parâmetro e exporta a ID e o ARN do novo ativo.
AWSTemplateFormatVersion: '2010-09-09' Description: A DevOps Agent skill managed as an AWS::DevOpsAgent::Asset resource. Parameters: AgentSpaceId: Type: String Description: The ID of the Agent Space that owns the skill. Resources: RdsPerformanceSkill: Type: AWS::DevOpsAgent::Asset Properties: AgentSpaceId: !Ref AgentSpaceId AssetType: skill Metadata: name: rds-performance-investigation description: Investigation procedures for RDS performance issues. agent_types: - GENERIC Files: - Path: SKILL.md ContentText: | # RDS Performance Investigation Use this skill when customers report database latency, connection errors, query timeouts, or read/write performance degradation. Outputs: SkillAssetId: Value: !GetAtt RdsPerformanceSkill.AssetId SkillArn: Value: !GetAtt RdsPerformanceSkill.Arn
Implante-o com a AWS CLI, passando sua ID do Agent Space:
aws cloudformation deploy \ --template-file skill.yaml \ --stack-name DevOpsAgentSkillStack \ --parameter-overrides AgentSpaceId=8f6187a7-0388-4926-8217-3a0fe32f757c \ --region <REGION>
Uma habilidade que envia mais de um arquivo — por exemplo, mais um documento de referência — adiciona SKILL.md mais entradas a: Files
Files: - Path: SKILL.md ContentText: | # RDS Performance Investigation Investigation entry point. - Path: references/rds-metrics-reference.md ContentText: | # RDS metrics reference Key CloudWatch metrics to check.
Para criar a habilidade desativada ou desativá-la posteriormente, configure status Metadata (consulte Ativando e desativando habilidades) e atualize a pilha:
Metadata: name: rds-performance-investigation description: Investigation procedures for RDS performance issues. agent_types: - GENERIC status: INACTIVE
Crie um agente personalizado
Um agente personalizado é o mesmo recurso com um conteúdo diferente AssetTypeMetadata, e. O recurso a seguir cria um custom_agent ativo que seleciona um conjunto de ferramentas e habilidades. A skills lista faz referência às habilidades por meio de seus name metadados, para que você possa referenciar a habilidade que criou anteriormente.
RdsFirefighter: Type: AWS::DevOpsAgent::Asset Properties: AgentSpaceId: !Ref AgentSpaceId AssetType: custom_agent Metadata: name: rds-firefighter tools: - cloudwatch:GetMetricData - rds:DescribeDBInstances skills: - rds-performance-investigation Files: - Path: AGENT.md ContentText: | # RDS Firefighter Custom agent for RDS incidents.
Os outros tipos de ativos funcionam da mesma maneira: defina AssetType e forneça Metadata as chaves que o tipo exige (consulte Tipos de ativos). Por exemplo, um agents_md ativo é definido AssetType: agents_md com Metadata conteúdo agent_type: INCIDENT_TRIAGE e um AGENTS.md arquivo.
Agende o agente personalizado com um gatilho
Para executar o agente personalizado automaticamente, adicione um AWS::DevOpsAgent::Trigger recurso. Um gatilho é filho do Agent Space. Sua ação faz referência ao agente personalizado para ser executado pelo ID do ativo, no formuláriocustom:<assetId>. Use Fn::GetAtt para passar a senha do agente personalizado AssetId para CloudFormation conectar os dois recursos e ordenar sua criação.
O gatilho a seguir executa o agente rds-firefighter personalizado uma vez por dia:
DailyRdsCheck: Type: AWS::DevOpsAgent::Trigger Properties: AgentSpaceId: !Ref AgentSpaceId Type: TIME_BASED Condition: Schedule: Expression: rate(1 day) Action: actionType: create:task task: agent: !Sub - custom:${AssetId} - AssetId: !GetAtt RdsFirefighter.AssetId Status: Active
As Action propriedades AgentSpaceIdType,Condition, e são somente para criação. Alterar qualquer um deles substitui o gatilho. A Status propriedade aceita Active ou Inactive pode ser atualizada no local. Defina-o para Inactive pausar o gatilho sem excluí-lo. Para obter mais informações sobre a sintaxe da expressão de agendamento, consulteExecutando agentes personalizados.
AWS::DevOpsAgent::Assete AWS::DevOpsAgent::Trigger estão disponíveis nas AWS regiões em que o AWS DevOps agente é oferecido. Para obter mais informações sobre AWS as regiões suportadas, consulteRegiões aceitas. Para implantar o Agent Space principal, as funções do IAM e o aplicativo do operador como infraestrutura como código, consulteConceitos básicos de AWS DevOps Agente usando AWS CloudFormation.
Exemplos para os outros tipos de ativos
O passo a passo da habilidade acima se aplica a todos os outros tipos de ativos. A única diferença é o metadata bloco e, para anexos, a escolha do conteúdo binário. As CreateAsset chamadas mínimas abaixo ilustram cada tipo.
Armazenamentos de memória e memórias usam a mesma CreateAsset operação. Crie primeiro a loja e depois a memória. Para obter mais informações sobre seus metadados, consulte #memory_store memory_store and memory. #memory
Crie um AGENTS.md:
aws devops-agent create-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-type agents_md \ --metadata '{ "agent_type": "INCIDENT_TRIAGE" }' \ --content '{ "file": { "path": "AGENTS.md", "body": { "text": "# Triage Instructions\n\nFollow these steps for new incidents." } } }'
Crie um anexo (conteúdo binário; crie a solicitação a partir de um arquivo JSON, conforme mostrado em Criar uma habilidade a partir de um arquivo binário):
base64 -w 0 topology.png > topology.png.b64 cat > create-attachment.json <<EOF { "agentSpaceId": "8f6187a7-0388-4926-8217-3a0fe32f757c", "assetType": "attachment", "metadata": { "filename": "topology.png", "extension": "png", "size": 184320 }, "content": { "file": { "path": "topology.png", "body": { "bytes": "$(cat topology.png.b64)" } } } } EOF aws devops-agent create-asset --cli-input-json file://create-attachment.json
Crie um agente personalizado:
aws devops-agent create-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-type custom_agent \ --metadata '{ "name": "rds-firefighter", "tools": ["cloudwatch:GetMetricData", "rds:DescribeDBInstances"], "skills": ["rds-performance-investigation"] }' \ --content '{ "file": { "path": "AGENT.md", "body": { "text": "# RDS Firefighter\n\nCustom agent for RDS incidents." } } }'
Crie um perfil de teste:
aws devops-agent create-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-type test_profile \ --metadata '{ "name": "checkout-api-tests", "test_agent_type": "releaseApiTesting", "target_url": "https://api.example.com", "test_personas": ["guest", "authenticated"] }' \ --content '{ "file": { "path": "PROFILE.md", "body": { "text": "# Checkout API test profile" } } }'
Crie um ativo de feedback:
aws devops-agent create-asset \ --agent-space-id 8f6187a7-0388-4926-8217-3a0fe32f757c \ --asset-type feedback \ --metadata '{ "execution_id": "b2c3d4e5-6789-01ab-cdef-example22222", "agent_types": ["INCIDENT_TRIAGE"] }' \ --content '{ "file": { "path": "FEEDBACK.md", "body": { "text": "{\"verdict\":\"correct\"}" } } }'
Liste os tipos de ativos compatíveis:
aws devops-agent list-asset-types