

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memulai Agen Terkelola Amazon Bedrock (dengan OpenAI) saat Runtime AgentCore
<a name="runtime-get-started-bma"></a>

**catatan**  
Agen Terkelola Amazon Bedrock (dengan OpenAI) sedang dalam pratinjau. Fitur dan API dapat berubah sebelum ketersediaan umum.

Agen Terkelola Amazon Bedrock menjalankan harness OpenAI Codex. AWS Harness menjalankan loop antara model dan alat, menjaga sesi, dan memadatkan konteks saat percakapan tumbuh. Ketika agen harus menjalankan perintah atau bekerja dengan file, Agen Terkelola Bedrock mengirimkan pekerjaan ke lingkungan. Anda memutuskan di mana lingkungan itu berjalan.

Anda dapat menjalankan Codex exec-server di komputer Anda sendiri untuk pengembangan lokal. Untuk beban kerja lainnya, Agen Terkelola Bedrock memanggil AgentCore Runtime di akun Anda. Runtime memberikan setiap sesi microVM-nya sendiri. Sesi berjalan di bawah peran eksekusi yang Anda kontrol, dan Runtime dapat terhubung ke VPC Anda sehingga agen dapat menjangkau sumber daya pribadi. Panggilan model tetap berada di Bedrock Managed Agents, sehingga container hanya menjalankan perintah yang dikirim agen.

Dalam tutorial ini, Anda melakukan tugas-tugas ini:
+ Buat dan terapkan Runtime dengan CLI AgentCore .
+ Mulai sesi dengan OpenAI SDK. Agen menggunakan keterampilan sampel di Runtime Anda.
+ (Opsional) Tambahkan keterampilan Anda sendiri.

Langkah 1 hingga 4 memakan waktu sekitar 15 menit.

Sumber AWS daya yang Anda buat dalam tutorial ini dapat mengakibatkan biaya ke AWS akun Anda. Sumber daya ini mencakup Runtime, build AWS CodeBuild image, dan panggilan model Bedrock Managed Agents. Untuk informasi selengkapnya, lihat [harga AgentCore ](https://aws.amazon.com/bedrock/agentcore/pricing/). Untuk menghentikan tagihan, hapus sumber daya di[Langkah 8: Membersihkan](#runtime-get-started-bma-clean-up).

## Prasyarat
<a name="runtime-get-started-bma-prerequisites"></a>
+  **Node.js 20 atau setelahnya.** AgentCore CLI didistribusikan sebagai paket npm. Periksa dengan`node --version`.
+  **uv.** Klien sampel menggunakan [uv](https://docs.astral.sh/uv/) untuk menginstal dependensi Python-nya.
+  ** AWS Akun dengan kredensi yang dikonfigurasi.** Untuk membuat akun, lihat [Memulai AWS akun](https://docs.aws.amazon.com/accounts/latest/reference/getting-started.html). Untuk mengonfigurasi kredensil, lihat [Mengkonfigurasi CLI. AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+  **Izin IAM.** Identitas Anda memerlukan izin untuk melakukan panggilan AgentCore API dan mengasumsikan peran bootstrap CDK yang digunakan selama penerapan. Lihat [Gunakan AgentCore CLI](runtime-permissions.md#runtime-permissions-cli). Klien sampel juga membutuhkan izin IAM. Lihat [Peran sesi](#runtime-get-started-bma-session-role).
+  **Akses model.** Akun Anda memerlukan akses ke model `openai.gpt-5.6-luna` Agen Terkelola Batuan Dasar.

CLI membangun gambar kontainer dengan AWS CodeBuild di akun Anda.

## Langkah 1: Buat proyek
<a name="runtime-get-started-bma-create"></a>

Instal AgentCore CLI, dan atur kredensional dan Wilayah Anda:

```
npm install -g @aws/agentcore
agentcore --version

export AWS_PROFILE=your-profile
export AWS_REGION=us-east-1
```

Buat proyek dengan `BedrockManagedAgents` kerangka kerja. Anda juga dapat menjalankan `agentcore create` tanpa bendera. Pilih **Agen**, lalu pilih **Agen Terkelola Batuan Dasar** sebagai kerangka kerja.

```
agentcore create --name MyManagedAgent --framework BedrockManagedAgents
cd MyManagedAgent
```

Proyek ini memiliki konfigurasi Runtime `agentcore/agentcore.json` dan sumber kontainer di`app/MyManagedAgent/`. Kontainer berjalan`codex exec-server`, yang terhubung ke Agen Terkelola Batuan Dasar dan menjalankan perintah agen.

Proyek mengonfigurasi Runtime dengan default ini:
+ Batas waktu idle 30 menit dan masa pakai maksimum 8 jam. Lihat [Mengonfigurasi setelan siklus hidup](runtime-lifecycle-settings.md).
+ Peran eksekusi dengan izin di`policies/bma-acr-policy.json`.

### Struktur proyek
<a name="runtime-get-started-bma-project-structure"></a>

```
MyManagedAgent/
├── agentcore/
│   ├── agentcore.json
│   └── cdk/
└── app/MyManagedAgent/
    ├── Dockerfile
    ├── lifecycle/server.py
    ├── otel/collector.yaml
    ├── plugins/acr-report/
    ├── policies/
    │   ├── bma-acr-policy.json
    │   ├── bma-session-trust.json
    │   └── bma-session-policy.json
    ├── pyproject.toml
    ├── client.py
    └── README.md
```

File kunci:
+  `lifecycle/server.py`- Server siklus hidup. Agen Terkelola Bedrock memanggilnya untuk memulai sesi `codex exec-server` Runtime Anda. Jangan ubah file ini.
+  `Dockerfile`- Menginstal Codex, CloudWatch agen, dan Python, dan salinan`lifecycle/`,, dan ke. `otel/` `plugins/` `/opt/bma`
+  `otel/collector.yaml`- Mengirim bentang dan log dari exec-server ke. CloudWatch
+  `plugins/acr-report/`- Contoh plugin dengan satu keterampilan. Keterampilan menghemat `acr-report.txt` di ruang kerja.
+  `policies/bma-acr-policy.json`- Kebijakan peran eksekusi Runtime. Memungkinkan `bedrock-mantle:RegisterEnvironment` dan`bedrock-mantle:ConnectEnvironment`. Untuk membatasinya pada satu proyek, ubah `Resource` ke`arn:aws:bedrock-mantle:<region>:<account-id>:project/<project-id>`.
+  `pyproject.toml`- Dependensi Python. `dev`Grup ini `client.py` hanya untuk.
+  `policies/bma-session-trust.json`dan `policies/bma-session-policy.json` - Kebijakan kepercayaan dan izin peran sesi. Lihat [Peran sesi](#runtime-get-started-bma-session-role).
+  `client.py`- Contoh klien yang memulai sesi. Anda menjalankannya di Langkah 3.

### Menerapkan Runtime di VPC
<a name="runtime-get-started-bma-vpc"></a>

Tambahkan opsi jaringan ke`agentcore create`:

```
agentcore create --name MyManagedAgent --framework BedrockManagedAgents \
  --network-mode VPC --vpc-id <vpc-id> --subnets <subnet-ids> \
  --security-groups <security-group-ids>
```

VPC harus memiliki rute ke titik akhir Agen Terkelola Batuan Dasar, karena server eksekusi terhubung ke sana. Pembuatan gambar mengunduh Codex dan Python, sehingga juga membutuhkan rute ke internet. Lihat [Mengkonfigurasi AgentCore untuk VPC](agentcore-vpc.md).

### Jalankan Runtime pada Instance
<a name="runtime-get-started-bma-instances"></a>

Proyek yang sama berjalan pada tipe komputasi **Instances**. Tambahkan penyedia kapasitas ke proyek, lalu tambahkan agen dengan penyedia kapasitas:

```
agentcore create --name MyManagedAgent --no-agent
cd MyManagedAgent
agentcore add capacity-provider --name MyCapacityProvider \
  --subnets <subnet-ids> --security-groups <security-group-ids> \
  --os LINUX_ARM64 --instance-types c7g.large
agentcore add agent --name MyManagedAgent --framework BedrockManagedAgents \
  --capacity-provider MyCapacityProvider
```

Kemudian lanjutkan dengan[Langkah 2: Menyebarkan](#runtime-get-started-bma-deploy). `agentcore deploy`juga menciptakan penyedia kapasitas dan peran operatornya.
+ Jenis instance use `LINUX_ARM64` dan Graviton, karena image build membuat image ARM64.
+ Penyedia kapasitas memberikan jaringan. Subnet harus memiliki rute ke titik akhir Agen Terkelola Batuan Dasar.

Untuk melampirkan penyedia kapasitas yang tidak ada dalam proyek, berikan ARN ke. `agentcore create --framework BedrockManagedAgents --capacity-provider <capacity-provider-arn>` Lihat [Instans Runtime dan penyedia kapasitas](runtime-instances.md).

## Langkah 2: Menyebarkan
<a name="runtime-get-started-bma-deploy"></a>

```
agentcore deploy
agentcore status
```

CLI membangun gambar dengan AWS CodeBuild di akun Anda, dan menyebarkan Runtime dan peran eksekusinya. Agen Terkelola Batuan Dasar memanggil Runtime untuk Anda.

Simpan ARN Runtime dari output: `agentcore status`

```
arn:aws:bedrock-agentcore:us-east-1:<account-id>:runtime/<runtime-id>
```

## Langkah 3: Jalankan sesi
<a name="runtime-get-started-bma-client"></a>

Agen Terkelola Batuan Dasar menggunakan peran sesi untuk memanggil model dan memanggil Runtime Anda. Peran sesi bukan peran eksekusi Runtime. **Ketika Anda menjalankan`client.py`, itu menciptakan peran sesi di akun Anda.** `agentcore deploy`tidak membuat peran sesi, dan `agentcore remove` tidak menghapusnya. Lihat [Peran sesi](#runtime-get-started-bma-session-role).

Jalankan klien dari direktori agen:

```
cd app/MyManagedAgent
uv run client.py --runtime <runtime-arn>
```

Klien membuat sesi dan mencetak ID sesi, setiap perintah dengan outputnya, dan jawaban agen. Secara default, agen menggunakan `acr-report` keterampilan untuk menyimpan `acr-report.txt` di ruang kerja.

Bagian selanjutnya memberi tahu Anda bagaimana klien mengelola peran sesi, dan izin IAM mana yang Anda perlukan untuk menjalankan klien.

### Peran sesi
<a name="runtime-get-started-bma-session-role"></a>

Peran sesi bukan peran eksekusi Runtime. `agentcore deploy`menciptakan peran eksekusi dengan`policies/bma-acr-policy.json`. Klien memberikan peran sesi kepada Agen Terkelola Batuan Dasar di `role_arn` lapangan saat membuat sesi.

Ketika Anda memulai sesi baru dan tidak memberi`--role-arn`, klien melakukan langkah-langkah ini:

1. Jika peran `BmaSessionRole-<region>` tidak ada, klien menciptakannya.

1. Klien membandingkan kebijakan kepercayaan dan kebijakan inline peran dengan `policies/bma-session-trust.json` dan. `BmaSession` `policies/bma-session-policy.json` Jika kebijakan tidak sama, klien menulis file ke peran. File terbatas pada akun dan Wilayah Runtime.

1. Jika klien mengubah peran, itu menunggu 15 detik. IAM membutuhkan waktu ini sebelum Agen Terkelola Batuan Dasar dapat menggunakan perubahan.

Untuk mengubah peran, ubah file. Klien tidak menghapus kebijakan lain yang ditambahkan seseorang ke peran tersebut. Itu tidak memeriksa peran ketika Anda memberi`--session-id`, dan itu tidak mengubah peran yang Anda berikan`--role-arn`.

Untuk produksi, berikan klien peran untuk satu Runtime dan satu gateway dengan`--role-arn`. Untuk membuat peran, gunakan dua file di`policies/`. Masukkan partisi, Wilayah, dan ID akun Anda, dan ubah ` ` masuk `runtime/` dan `gateway/*` ke ID Runtime dan ID gateway Anda. Jangan mengubah file dalam proyek, karena semua proyek di Wilayah berbagi`BmaSessionRole-<region>`.

Identitas yang menjalankan klien memerlukan izin klien Agen Terkelola Batuan Dasar`bedrock-mantle:CallWithBearerToken`, dan `iam:PassRole` pada peran sesi. Untuk membiarkan klien membuat dan memperbaiki peran, berikan juga`iam:GetRole`,, `iam:CreateRole``iam:UpdateAssumeRolePolicy`,`iam:GetRolePolicy`, dan `iam:PutRolePolicy` seterusnya`arn:aws:iam::<account-id>:role/BmaSessionRole-*`. Jika Anda memberi`--role-arn`, klien tidak memerlukan lima izin ini.

Untuk kebijakan kepercayaan, izin peran sesi, dan izin klien, lihat Peran [Keamanan dan IAM di Panduan Pengguna](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-managed-agents-openai-security.html) *Amazon Bedrock*.

### Bagaimana klien bekerja
<a name="runtime-get-started-bma-client-code"></a>

Klien menggunakan `client.beta.agents` sumber daya `openai` paket. Agen Terkelola Batuan Dasar menjalankan loop agen.

Ketika klien membuat sesi, ia menetapkan nilai-nilai ini dalam`environment`:
+  `type`-`aws_bedrock_agentcore`, yang memberitahu Bedrock Managed Agents untuk menggunakan AgentCore Runtime.
+  `runtime_arn`- Runtime Anda. Sesi berjalan di Wilayah Runtime.
+  `workspace_directory`- Direktori tempat agen menjalankan perintahnya. Klien menggunakan`/home/app/workspace`. Server siklus hidup membuat direktori.
+  `runtime_qualifier`- Titik akhir Runtime. Klien menggunakan`DEFAULT`.
+  `capability_directories`- Direktori tempat Agen Dikelola Bedrock menemukan keterampilan. Klien menggunakan`/opt/bma/plugins`.

Klien juga `extra_body` menetapkan `role_arn` peran sesi. `openai`Paket tidak memiliki parameter untuk bidang ini.

`provide_token`Pembantu menggunakan AWS kredensil Anda untuk mendapatkan token pembawa Amazon Bedrock berumur pendek untuk setiap permintaan.

Jika Anda menambahkan gateway ke proyek, berikan ARN dari output with. `agentcore deploy` `--gateway` Gunakan bendera hanya untuk sesi baru. Klien menambahkan gateway sebagai `mcp` alat dengan ARN di. `connector_id` Agen Terkelola Batuan Dasar memanggil gateway dengan peran sesi. Gateway harus mendukung versi `2025-03-26` MCP. Jika tidak, agen tidak mendapatkan alat gateway, dan Agen Terkelola Bedrock tidak menunjukkan kesalahan.

```
"""Send an input to a Bedrock Managed Agents session that uses this project's ACR."""

import argparse
import json
import time
from pathlib import Path
from typing import Any

import boto3
from aws_bedrock_token_generator import provide_token
from botocore.exceptions import ClientError
from openai import NotFoundError, OpenAI

BMA_MODEL_ID = "openai.gpt-5.6-luna"
# The agent runs its commands in this directory. The lifecycle server creates it.
WORKSPACE_DIRECTORY = "/home/app/workspace"
# Plugins and skills that the agent can use. The image has the acr-report plugin
# at this path. Add the path of an S3 Files mount to use the skills in a bucket.
CAPABILITY_DIRECTORIES = ["/opt/bma/plugins"]
TURN_END = ("completed", "failed", "cancelled")
TOOL_CALLS = ("mcp_call", "function_call", "web_search_call")
POLICIES = Path(__file__).parent / "policies"
SESSION_ROLE = "BmaSessionRole-{region}"
SESSION_POLICY = "BmaSession"


def show(data: dict[str, Any]) -> None:
    """Prints the session ID, the commands, the tool calls, and the answer."""
    kind = data["type"].removeprefix("agent.session.")
    item = data.get("item") or {}
    if kind == "created":
        print(f"Session {data['session']['id']}")
    elif kind == "turn.output_text.delta":
        print(data["delta"], end="", flush=True)
    elif kind == "turn.item.done" and item.get("type") == "command_execution":
        print(f"\n$ {item['command']}\n{item.get('output') or ''}".rstrip())
    elif kind == "turn.item.done" and item.get("type") in TOOL_CALLS:
        print(f"\nTool {item.get('name') or item['type']} {item.get('status')}")
    elif kind == "error" or kind.split(".")[-1] in TURN_END:
        source = data.get("turn") or data.get("environment") or data.get("session")
        print(f"\n{kind} {(source or data).get('error') or ''}".rstrip())


def load_policy(name: str, partition: str, region: str, account: str) -> str:
    """Reads a policy file and puts in the partition, the Region, and the account."""
    text = (POLICIES / name).read_text()
    for key, value in (("Partition", partition), ("Region", region), ("AccountId", account)):
        text = text.replace("${AWS::" + key + "}", value)
    return text


def session_role(runtime_arn: str) -> str:
    """Creates or repairs the session role, and returns its ARN.

    If the trust policy or the policy of the role is not the same as the file in `policies/`,
    the client writes the file to the role.
    """
    _, partition, _, region, account = runtime_arn.split(":")[:5]
    name = SESSION_ROLE.format(region=region)
    trust = load_policy("bma-session-trust.json", partition, region, account)
    policy = load_policy("bma-session-policy.json", partition, region, account)
    iam = boto3.client("iam")
    changed = False
    try:
        role = iam.get_role(RoleName=name)["Role"]
    except iam.exceptions.NoSuchEntityException:
        role = iam.create_role(RoleName=name, AssumeRolePolicyDocument=trust)["Role"]
        print(f"Created the session role {name}")
        changed = True
    else:
        if role["AssumeRolePolicyDocument"] != json.loads(trust):
            iam.update_assume_role_policy(RoleName=name, PolicyDocument=trust)
            print(f"Updated the trust policy of {name}")
            changed = True
    try:
        current = iam.get_role_policy(RoleName=name, PolicyName=SESSION_POLICY)["PolicyDocument"]
    except iam.exceptions.NoSuchEntityException:
        current = None
    if current != json.loads(policy):
        iam.put_role_policy(RoleName=name, PolicyName=SESSION_POLICY, PolicyDocument=policy)
        if not changed:
            print(f"Updated the policy of {name}")
        changed = True
    if changed:
        # IAM needs some seconds before Bedrock Managed Agents can use a new or changed role.
        time.sleep(15)
    return role["Arn"]


def main() -> None:
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("--runtime", required=True, help="The ACR ARN.")
    parser.add_argument(
        "--session-id",
        help="The BMA session ID. If it does not exist, the client creates a session.",
    )
    parser.add_argument(
        "--input",
        default="Use the acr-report skill to save an ACR report in the workspace.",
    )
    parser.add_argument(
        "--gateway",
        help="The Gateway ARN from the output of `agentcore deploy`.",
    )
    parser.add_argument(
        "--role-arn",
        help="The session role that BMA assumes. If you do not give it, the client creates a role.",
    )
    parser.add_argument("--delete", action="store_true", help="Delete the session.")
    parser.add_argument("--raw", action="store_true", help="Print events as JSON.")
    args = parser.parse_args()
    # BMA must run in the Region of the ACR.
    region = args.runtime.split(":")[3]

    with OpenAI(
        api_key=lambda: provide_token(region=region),
        base_url=f"https://bedrock-mantle.{region}.api.aws/openai/v1",
    ) as client:
        sessions = client.beta.agents.sessions
        session_id = args.session_id
        if session_id:
            try:
                session = sessions.retrieve(session_id).model_dump(warnings=False)
            except NotFoundError:
                print(f"Session {session_id} does not exist.")
                session_id = None
            else:
                if session["environment"].get("runtime_arn") != args.runtime:
                    raise ValueError(f"Session {session_id} uses another ACR.")
        if not session_id and not args.role_arn:
            try:
                args.role_arn = session_role(args.runtime)
            except ClientError as error:
                parser.error(
                    f"The client cannot create or check the session role: {error}. "
                    "Get the IAM permissions in README.md, or give --role-arn."
                )
            print(f"Session role {args.role_arn}")

        if session_id:
            # BMA opens the stream only with stream=true, and the SDK does not send it.
            events = sessions.events.stream(session_id, extra_query={"stream": "true"})
            message = {
                "role": "user",
                "content": [{"type": "input_text", "text": args.input}],
            }
            sessions.events.create(
                session_id,
                events=[{"type": "agent.session.input.message", "input": [message]}],
            )
        else:
            agent: dict[str, Any] = {
                "model": BMA_MODEL_ID,
                "instructions": "Use the available tools to complete the task.",
            }
            if args.gateway:
                # Bedrock Managed Agents calls Gateway with the session role from the service side.
                agent["tools"] = [
                    {"type": "mcp", "server_label": "team_tools", "connector_id": args.gateway}
                ]
                args.input += " Then list the tools that the Gateway gives you."
            events = sessions.create(
                agent=agent,
                environment={
                    "type": "aws_bedrock_agentcore",
                    "runtime_arn": args.runtime,
                    "runtime_qualifier": "DEFAULT",
                    "workspace_directory": WORKSPACE_DIRECTORY,
                    "capability_directories": CAPABILITY_DIRECTORIES,
                },
                input=args.input,
                stream=True,
                # The SDK has no role_arn parameter. BMA assumes this role to call the ACR.
                extra_body={"role_arn": args.role_arn},
            )

        with events:
            for event in events:
                data = event.model_dump(mode="json", warnings=False)
                session_id = session_id or (data.get("session") or {}).get("id")
                if args.raw:
                    print(json.dumps(data), flush=True)
                else:
                    show(data)
                if data["type"].removeprefix("agent.session.turn.") in TURN_END:
                    break

        if args.delete:
            sessions.delete(session_id)
            print(f"\nDeleted session {session_id}")


if __name__ == "__main__":
    main()
```

## Langkah 4: Lanjutkan sesi
<a name="runtime-get-started-bma-continue"></a>

Untuk mengirim input lain ke sesi yang sama, tambahkan ID sesi. Giliran menggunakan ruang kerja yang sama. Untuk menjaga ruang kerja setelah berhenti diam, tambahkan penyimpanan sesi seperti di. [Menyimpan file setelah berhenti diam](#runtime-get-started-bma-keep-files)

```
uv run client.py --runtime <runtime-arn> --session-id <session-id> \
  --input "Run cat acr-report.txt and show the output."
```

Jika sesi tidak ada, klien membuat sesi baru. Tambahkan `--delete` untuk menghapus sesi setelah giliran, atau `--raw` untuk mencetak setiap acara sebagai JSON.

### Menyimpan file setelah berhenti diam
<a name="runtime-get-started-bma-keep-files"></a>

Pada MicroVM Runtime, letakkan direktori home server eksekusi pada penyimpanan sesi. Kemudian ruang kerja, status koneksi, dan `CODEX_HOME` tinggal setelah berhenti diam.

1. Alih-alih perintah di Langkah 1, buat proyek dengan penyimpanan sesi:

   ```
   agentcore create --name MyManagedAgent --framework BedrockManagedAgents \
     --session-storage-mount-path /mnt/home
   cd MyManagedAgent
   ```

1. Dalam`agentcore/agentcore.json`, tambahkan variabel ini ke entri untuk Runtime:

   ```
   "envVars": [{ "name": "BMA_HOME_DIR", "value": "/mnt/home" }]
   ```

1. Di`client.py`, atur`WORKSPACE_DIRECTORY = "/mnt/home/workspace"`.

1. Menyebarkan, dan menjalankan klien.

Untuk informasi selengkapnya tentang penyimpanan sesi, lihat [Konfigurasi sistem berkas untuk AgentCore Runtime](runtime-filesystem-configurations.md).

## Langkah 5: (Opsional) Tambahkan keterampilan
<a name="runtime-get-started-bma-skills"></a>

Untuk menambahkan keterampilan pada gambar, tambahkan plugin di bawah `plugins/` dan terapkan. Plugin memiliki `.codex-plugin/plugin.json` file dan `skills/` direktori. `skills/`Direktori memiliki satu subdirektori untuk setiap keterampilan, dengan `SKILL.md` file di dalamnya. Gambar menyalinnya`/opt/bma/plugins`, yang sudah diberikan klien kepada Agen Terkelola Bedrock.

Untuk memulai, menyalin`plugins/acr-report/`, dan mengganti nama direktori plugin dan `skills/acr-report/` nama plugin Anda dan keahlian Anda. Dalam`plugin.json`, set`name`,`version`,`description`, dan`"skills": "./skills/"`. Masing-masing `SKILL.md` dimulai dengan materi depan yang memiliki `name` dan`description`. Setelah penerapan, mulailah sesi baru dengan`--input "Use the <skill-name> skill to …​"`.

### Bagikan keterampilan dari ember Amazon S3
<a name="runtime-get-started-bma-skills-s3"></a>

Pasang titik akses File S3 di Runtime. Kemudian keterampilan berubah ketika ember berubah, dan gambar tetap sama. Untuk sistem file File S3, titik akses, dan aturan grup keamanan, lihat [Konfigurasi sistem file untuk AgentCore ](runtime-filesystem-configurations.md) Runtime.

Mount File S3 membutuhkan Runtime dalam mode jaringan VPC. Buat proyek dengan opsi jaringan di[Menerapkan Runtime di VPC](#runtime-get-started-bma-vpc).

Di ember, letakkan setiap plugin di direktorinya sendiri di bawah direktori root titik akses. Gunakan tata letak yang sama dengan`plugins/acr-report/`: `<plugin>/.codex-plugin/plugin.json` dan`<plugin>/skills/<skill>/SKILL.md`.

Tambahkan mount ke entri untuk Runtime di`agentcore/agentcore.json`:

```
{
  "filesystemConfigurations": [
    {
      "s3FilesAccessPoint": {
        "accessPointArn": "arn:aws:s3files:us-east-1:111122223333:file-system/fs-0123456789abcdef0/access-point/fsap-0123456789abcdef0",
        "mountPath": "/mnt/skills"
      }
    }
  ]
}
```

Kemudian atur `CAPABILITY_DIRECTORIES` `client.py` ke`["/opt/bma/plugins", "/mnt/skills"]`, dan terapkan.

## Langkah 6: Lihat log dan jejak
<a name="runtime-get-started-bma-observe"></a>

```
agentcore logs --since 15m
```

Penerapan pertama mengaktifkan Pencarian CloudWatch Transaksi di akun Anda. Jejak terlihat setelah sekitar 10 menit. Untuk melihat jejak, buka CloudWatch konsol dan pilih **GenAI Observability**. Setiap panggilan dari Agen Terkelola Bedrock ke server siklus hidup memiliki satu rentang. `bma.invocation` Untuk informasi selengkapnya, lihat [Melihat data observabilitas untuk agen Amazon Bedrock AgentCore Anda](observability-view.md).

**Pengaturan Penelusuran Transaksi berlaku untuk seluruh akun**  
Pencarian Transaksi dan pengindeksan rentangnya berlaku untuk seluruh akun di Wilayah, dan biaya tambahan mungkin berlaku. Untuk mempertahankan pengaturan Anda saat ini, tambahkan `"disableTransactionSearch": true` ke `~/.agentcore/config.json` sebelum Anda menerapkan.

## Langkah 7: Perbarui dan terapkan ulang
<a name="runtime-get-started-bma-update"></a>

Ubah pengaturan Runtime di`agentcore/agentcore.json`, atau file gambar, dan terapkan lagi. Misalnya, pengaturan ini menghentikan sesi idle setelah 10 menit. Nilainya dalam hitungan detik.

```
{
  "lifecycleConfiguration": {
    "idleRuntimeSessionTimeout": 600,
    "maxLifetime": 28800
  }
}
```

```
agentcore deploy
```

Perubahan berlaku untuk sesi baru.

### Variabel lingkungan dari server siklus hidup
<a name="runtime-get-started-bma-env-vars"></a>

Tambahkan variabel ke `envVars` dalam entri untuk Runtime, misalnya`{ "name": "DISABLE_ADOT_OBSERVABILITY", "value": "true" }`.


| Variabel | Default | Deskripsi | 
| --- | --- | --- | 
|  `DISABLE_ADOT_OBSERVABILITY`  | Tidak diatur | Set `true` untuk mematikan jejak dan log exec-server. Server siklus hidup masih menulis lognya sendiri ke grup log Runtime. | 
|  `BMA_HOME_DIR`  |  `/home/app`  |  `HOME`dari exec-server. | 
|  `BMA_STATE_DIR`  |  `.bma` di `BMA_HOME_DIR`  | Direktori`state.json`, yang menjaga status koneksi sesi. | 
|  `BMA_CODEX_HOME`  |  `.codex` di `BMA_HOME_DIR`  |  `CODEX_HOME`dari exec-server. | 
|  `BMA_CODEX_BINARY`  |  `/opt/bma/bin/codex`  | Biner Codex. | 
|  `BMA_MAX_TURN_LEASE`  |  `300`  | Sewa giliran terpanjang, dalam hitungan detik. | 

Setiap build image menginstal rilis Codex terbaru. Server siklus hidup membutuhkan Codex 0.154.0 atau yang lebih baru. Untuk menyematkan rilis, tambahkan `CODEX_NON_INTERACTIVE=1` di `CODEX_RELEASE=<version>` sebelah`Dockerfile`.

## Langkah 8: Membersihkan
<a name="runtime-get-started-bma-clean-up"></a>

Untuk menghapus sesi, tambahkan `--delete` ke proses terakhir klien untuk sesi itu. Kemudian hapus sumber daya proyek, dan terapkan untuk menghapus Runtime, peran eksekusi, dan tumpukan.

```
agentcore remove all
agentcore deploy
```

Penyebaran tidak menghapus sumber daya ini:
+ Grup CloudWatch log Log dari Runtime, CodeBuild proyek yang membangun image, dan fungsi Lambda yang memulai build.
+ Kunci AWS KMS dari repositori Amazon ECR. Kunci tetap dalam **status penghapusan Tertunda** selama 30 hari, dan kemudian AWS KMS menghapusnya.
+ `CDKToolkit`Tumpukan, jika penerapan pertama melakukan bootstrap akun dan Wilayah. Aplikasi AWS CDK lain dapat menggunakan tumpukan ini. Hapus hanya jika tidak ada aplikasi lain yang menggunakannya.
+ Pengaturan Pencarian Transaksi dari Langkah 6.
+ Peran sesi yang `client.py` dibuat pada Langkah 3.

Untuk menghapus peran sesi, jalankan perintah ini:

```
aws iam delete-role-policy --role-name BmaSessionRole-<region> --policy-name BmaSession
aws iam delete-role --role-name BmaSessionRole-<region>
```

Untuk menemukan grup log, jalankan perintah ini. Kemudian hapus setiap grup log.

```
aws logs describe-log-groups --log-group-name-prefix /aws/bedrock-agentcore/runtimes/<project-name>_<agent-name>- --query 'logGroups[].logGroupName'
aws logs describe-log-groups --log-group-name-prefix /aws/codebuild/AgentCore-<project-name>-<target-name>- --query 'logGroups[].logGroupName'
aws logs describe-log-groups --log-group-name-prefix /aws/lambda/AgentCore- --query 'logGroups[].logGroupName'
aws logs delete-log-group --log-group-name <log-group-name>
```

Ganti nilai-nilai ini:
+  `<project-name>`- Nama proyek. Pada Langkah 1, itu adalah`MyManagedAgent`.
+  `<agent-name>`- Nama agennya. Pada Langkah 1, itu juga`MyManagedAgent`.
+  `<target-name>`- Nama target penyebaran di`agentcore/aws-targets.json`. Nilai default-nya `default`. Dalam CodeBuild nama, setiap garis bawah (`_`) dalam nama proyek dan nama target berubah menjadi tanda hubung (). `-`

Nama grup log Lambda dipersingkat, seperti dalam contoh ini:

```
/aws/lambda/AgentCore-MyManagedAgent--ApplicationAgentMyManage-<suffix>
```

Perintah tersebut mencantumkan grup log Lambda dari semua proyek AgentCore CLI di Wilayah. Hapus hanya grup log proyek Anda.

Jika Anda menambahkan sumber daya lain ke proyek, seperti gateway atau memori, periksa apakah penerapan menghapusnya.

## Sumber daya terkait
<a name="runtime-get-started-bma-related"></a>
+  [Gunakan AgentCore CLI](runtime-permissions.md#runtime-permissions-cli) 
+  [Konfigurasikan pengaturan siklus hidup](runtime-lifecycle-settings.md) 
+  [Konfigurasi sistem file untuk AgentCore Runtime](runtime-filesystem-configurations.md) 
+  [Konfigurasikan AgentCore untuk VPC](agentcore-vpc.md) 
+  [Instans Runtime dan penyedia kapasitas](runtime-instances.md) 
+  [Lihat data observabilitas untuk agen Amazon Bedrock AgentCore Anda](observability-view.md) 