๐ฏ AgentCore
Runtime, Gateway, Memory, Identity, Policy โ ์์ด์ ํธ ํ๋ก๋์ ํ๋ซํผ
Amazon Bedrock AgentCore
Runtime ยท Gateway ยท Memory ยท Identity ยท Policy
์์ด์ ํธ๋ฅผ ํ๋ก๋์ ์ ๋ฐฐํฌํ๋ ํ๋ซํผ
๋น๋๋ถํฐ ์ด์๊น์ง โ ๊ด๋ฆฌํ ์์ด์ ํธ ์ธํ๋ผ
์ AgentCore์ธ๊ฐ
ํ๋ก๋์ ๊ฐญ ยท ํตํฉ ํ๋ซํผ ยท ํ๋ ์์ํฌ ์์ ยท ํ์ต ์ง๋
์์ด์ ํธ๋ฅผ ํ๋ก๋์ ์ ์ฌ๋ฆฌ๋ ค๋ฉด
๋ง๋๋ ๊ฒ๊ณผ ์ด์ํ๋ ๊ฒ์ ๋ณ๊ฐ์ ๋ฌธ์ โ ๋ก์ปฌ 3์ค ์ฝ๋ ์์ ๋์ธ ๋ค ๊ฐ์ง ๊ฐญ
์คํ ๊ฒฉ๋ฆฌ
์ธ์ ๋ง๋ค ๋ ๋ฆฝ ์คํ ํ๊ฒฝ โ ์ฌ์ฉ์ ๊ฐ ๋ฐ์ดํฐ ์ค์ผ ๋ฐฉ์ง
์ธ์ฆยท๊ถํ
๋๊ตฌ๋ง๋ค ์๊ฒฉ ์ฆ๋ช โ ํค ๋ณด๊ดยท๋กํ ์ด์ ยท์ ๊ทผ ์ ์ด
๊ธฐ์ต
๋ํ ์ด๋ ฅ ์ ์ฅ์ โ ์ธ์ ๋ณต์๊ณผ ์ฅ๊ธฐ ๊ธฐ์ต ํ์ดํ๋ผ์ธ
๊ด์ธกยทํ๊ฐ
์ถ๋ก ๊ฒฝ๋ก ํธ๋ ์ด์ฑ โ ํ์ง ์ธก์ ๊ณผ ํ๊ท ๊ฐ์ง
์์ด์ ํธ ์ฝ๋๋ 3์ค์ด์ง๋ง, ์ด์์๋ ์ด ๊ฐญ์ ๋ฉ์ธ ์ธํ๋ผ๊ฐ ํ์ํฉ๋๋ค โ ์ด ๊ฐญ์ ๊ด๋ฆฌํ ์๋น์ค๊ตฐ์ผ๋ก ๋ฉ์ฐ๋ ํ๋ซํผ์ด AgentCore์ ๋๋ค.
AgentCore = ํตํฉ ํ๋ซํผ
์คํ ยท ์ฐ๊ฒฐ ยท ๊ธฐ์ต ยท ํต์ โ ํ๋ก๋์ ๊ฐญ์ ๋ฉ์ฐ๋ ํต์ฌ 4์ถ
Runtime
์์ด์ ํธ ์คํ ํ๊ฒฝ โ MicroVM ๊ฒฉ๋ฆฌ
Gateway
๋๊ตฌ ์ฐ๊ฒฐ ์ค์ ๊ด๋ฆฌ โ MCP ํ๋กํ ์ฝ
Memory
๋ํ ๊ธฐ์ต โ ๋จ๊ธฐ(STM) + ์ฅ๊ธฐ(LTM)
Identity & Policy
์ธ์ฆ + ๊ถํ ์ ์ด โ Cedar
๋ชจ๋ ์๋น์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ฑํ ๊ฐ๋ฅ(Composable) โ ํ์ํ ๊ฒ๋ง ์กฐํฉํด ์ ์ง ๋์ ํ๊ณ , ์ฌ์ฉํ ๋งํผ๋ง ๊ณผ๊ธ๋ฉ๋๋ค.
ํ๋ ์์ํฌ ์์
์ด๋ค SDK๋ก ๋ง๋ค์๋ AgentCore์ ๋ฐฐํฌ ๊ฐ๋ฅ
| ํ๋ ์์ํฌ | ๋ฐฐํฌ ๊ฒฝ๋ก | ํตํฉ ์์ค |
|---|---|---|
| Strands | BedrockAgentCoreApp ๋ํ โ ZIP ๋๋ Container | ๋ค์ดํฐ๋ธ โ MemoryยทGateway ์ฐ๋ ๋ชจ๋์ด SDK์ ๋ด์ฅ |
| LangGraph | Container(ECR) โ Docker ์ด๋ฏธ์ง ๋ฐฐํฌ | ๊ธฐ์กด ๊ทธ๋ํ ์ฝ๋ ์์ ์์ด ๋ฐฐํฌ |
| CrewAI ยท ์ปค์คํ ์ฝ๋ | ZIP(Direct Code) ๋๋ Container | @app.entrypoint ๊ณ์ฝ๋ง ์งํค๋ฉด ์๋ฌด Python ์ฝ๋๋ ๋ฐฐํฌ |
AgentCore๋ ํ๋ ์์ํฌ๊ฐ ์๋๋ผ ์คํยท์ฐ๊ฒฐยท๊ธฐ์ตยทํต์ ๋ฅผ ๋งก๋ ์ธํ๋ผ โ ๋ง๋๋ ๋๊ตฌ๋ ๊ทธ๋๋ก ๋๊ณ ์ด์๋ง ์์ํฉ๋๋ค.
5๊ฐ ๋ชจ๋ ํ์ต ์ง๋
๋ค ์ถ์ ์ ์ฒด์ฑ์ ํ๊ณ , ์์ธ๋ ์ ๋ด ๋ชจ๋์์
-
1
Runtime
์ปค์คํ ์์ด์ ํธ ์ฝ๋์ ์คํ ํ๊ฒฝ โ MicroVM ์ธ์ ๊ฒฉ๋ฆฌ, ๋ฐฐํฌ ํ์ดํ๋ผ์ธ, ํ๋กํ ์ฝ(HTTPยทMCPยทA2A)๊ณผ ์ด์์ ์ ๋ด ๋ชจ๋์์ ๋ค๋ฃน๋๋ค.
-
2
Managed Harness
์ฝ๋ 0์ค ์ ์ธ์ ๋ฐฐํฌ โ CreateHarnessยทInvokeHarness 2๊ฐ API, Per-invocation Override, Runtime๊ณผ์ ์ ํ ๊ธฐ์ค์ ์ ๋ด ๋ชจ๋์์ ๋ค๋ฃน๋๋ค.
-
3
Gateway
๋๊ตฌ ํ๋ธ โ Target ์ ํ๋ณ ๊ตฌ์ฑ, ๋นํธ์ธ ์ปค๋ฅํฐ, Interceptor์ ์๋งจํฑ ๋๊ตฌ ๊ฒ์, Inbound/Outbound ์ธ์ฆ์ ์ ๋ด ๋ชจ๋์์ ๋ค๋ฃน๋๋ค.
-
4
Memory
STM/LTM 2๊ณ์ธต ๊ธฐ์ต โ ์ถ์ถ ์ ๋ต 4์ข ์ ๋์, ๋ค์์คํ์ด์ค, Strands ํตํฉ ์ฝ๋๋ฅผ ์ ๋ด ๋ชจ๋์์ ๋ค๋ฃน๋๋ค.
์ด๋ฒ ๋ชจ๋์์๋ ๊ฐ ์ถ์ ๋ง๋ณด๊ธฐ์ CLI ์ค์น ์ค์ต๊น์ง โ ์ ๋ด ๋ชจ๋์ด ๋ฐ๋ก ์๋ Identity & Policy๋ ์ด ๋ชจ๋์์ ๋ฐ๋ก ๋ค๋ฃน๋๋ค.
Runtime
MicroVM ๊ฒฉ๋ฆฌ ยท ๋ฐฐํฌ 2๋ฐฉ์ ยท CLI ์ฌ์ดํด
Runtime
์ปค์คํ ์์ด์ ํธ ์ฝ๋๋ฅผ ์ธ์ ๋ง๋ค ๊ฒฉ๋ฆฌ๋ MicroVM์์ ์คํํ๋ ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ
AgentCore Runtime
์ง์ ์์ฑํ ์์ด์ ํธ ์ฝ๋(StrandsยทLangGraphยทCrewAIยท์ปค์คํ )์ ํ๋ก๋์ ์คํ ํ๊ฒฝ
- ์ธ์ 1๊ฐ = MicroVM 1๊ฐ โ 2vCPU/8GB ๊ณ ์
- ๋ฐฐํฌ 2๋ฐฉ์ โ Direct Code(ZIP) ยท Container(ECR)
- ๋ฐฐํฌ ๊ณ์ฝ โ @app.entrypoint ํจ์ ํ๋
- ์ธ์ ์ต๋ 8์๊ฐ ยท Idle ์๋ ์ข ๋ฃ
์ด ํํธ๋ ์ฒซ ๋ฐฐํฌ๊น์ง์ ๋ง๋ณด๊ธฐ โ ์ธ์ ๋ผ์ดํ์ฌ์ดํดยทํ๋กํ ์ฝยท์ฟผํฐยท์ด์์ Runtime ์ ๋ด ๋ชจ๋์์ ๊น๊ฒ ๋ค๋ฃน๋๋ค.
์ ์ฉ MicroVM ๊ฒฉ๋ฆฌ
VM ์์ค ๊ฒฉ๋ฆฌ + ์๋ฒ๋ฆฌ์ค ์์ ์๋
๊ฒฉ๋ฆฌ ๋จ์๊ฐ ์ปจํ ์ด๋๊ฐ ์๋๋ผ VM โ ์ฝ๋๋ VM ๋ถํ ~100ms + ์ ์ฒด ์ด๊ธฐํ ์ ์ด์ด๋ฉฐ, ๊ณต์ ์ ๋ ์์น๋ ๋ฏธ๊ณตํ์ ๋๋ค.
๋ฐฐํฌ ๋ฐฉ์ 2๊ฐ์ง
ZIP์ด๋ Container๋ โ ์์กด์ฑ ๋ณต์ก๋๋ก ๊ฒฐ์
Direct Code (ZIP)
- ์์ค ์ฝ๋ ZIP ๋๋ S3 ์ ๋ก๋
- requirements.txt ์๋ ์ค์น
- Python 3.10~3.14, Node.js 22
- ๋ฐฐํฌ ~30์ด (๊ฐ์ฅ ๋น ๋ฆ)
- ์ต๋ 250MB (์์ถ)
- ๊ฐ๋จํ ์์ด์ ํธ์ ์ต์
agentcore deploy๊ฐ ์ฝ๋๋ฅผ ํจํค์งํ์ฌ ARM64(Graviton) ํ๊ฒฝ์์ ์คํํฉ๋๋ค. ZIP ์ ํ์ 250MB(์์ถ)/750MB(๋น์์ถ)์ ๋๋ค.
Container (ECR)
- Dockerfile โ CodeBuild โ ECR ํธ์
- ์ปค์คํ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฅ
- ARM64 ์ด๋ฏธ์ง ํ์ (Graviton)
- ๋ฐฐํฌ ์ ๋ถ (์ด๋ฏธ์ง ๋น๋)
- ์ต๋ 2GB
- ๋ณต์กํ ์์กด์ฑ์ ์ ํฉ
agentcore create --build Container๋ก Dockerfile์ด ์๋ ์์ฑ๋ฉ๋๋ค. CodeBuild๊ฐ ARM64 ๋น๋์ ECR ํธ์๋ฅผ ์๋ ์ํํฉ๋๋ค.
AgentCore CLI ๋ฐฐํฌ ์ฌ์ดํด
create โ dev โ deploy โ invoke โ ์ธํ๋ผ ์ฝ๋ 0์ค
1
2
3
4
ํฐ๋ฏธ๋ โ AgentCore CLI
์์ด์ ํธ ์ฝ๋ โ @app.entrypoint
๋ฐฐํฌ ๊ณ์ฝ์ ์ง์ ์ ํจ์ ํ๋ โ ๋๋จธ์ง๋ ํ๋ฒํ ์์ด์ ํธ ์ฝ๋
ํต์ฌ ํฌ์ธํธ
- BedrockAgentCoreApp
- Runtime์ HTTP ์๋ฒ ๊ณ์ฝ์ ๋์ ๊ตฌํ โ ์๋ฒ ์ฝ๋ 0์ค
- @app.entrypoint
- ์ฌ์ฉ์ ์์ฒญ์ด ๋ผ์ฐํ ๋๋ ์ง์ ์ โ ์ด ํจ์๊ฐ ๋ฐฐํฌ ๊ณ์ฝ
- payload
- ํธ์ถ ์ธก์ด ๋ณด๋ธ JSON โ invoke๋ก ๋๊ธด ํ๋กฌํํธ๊ฐ ๋ด๊น
- ๋ฐํ๊ฐ
- JSON ์ง๋ ฌํ ๊ฐ๋ฅํ dict โ ๊ทธ๋๋ก ์๋ต ๋ณธ๋ฌธ์ด ๋จ
์ฝ๋ (main.py)
from strands import Agent
from bedrock_agentcore import BedrockAgentCoreApp
app = BedrockAgentCoreApp()
# ๋ฐฐํฌ ๊ณ์ฝ โ Runtime์ด ์ด ํจ์๋ก ์์ฒญ์ ๋ผ์ฐํ
@app.entrypoint
def my_agent(payload):
agent = Agent(system_prompt="IT ํฌํ๋ฐ์คํฌ ์์ด์ ํธ")
result = agent(payload.get("prompt"))
return {"result": result.message}
์ ๋ด ๋ชจ๋ ๋ง๋ณด๊ธฐ
Managed Harness ยท Gateway ยท Memory โ ์ธ ์ถ์ ์ ์ฒด์ฑ
Managed Harness
์ฝ๋ ์์ด ์ ์ธ ์คํ๋ง์ผ๋ก ์์ด์ ํธ๋ฅผ ๋ง๋๋ ๊ด๋ฆฌํ ๋ฐฐํฌ ๋ฐฉ์
Managed Agent Harness
์์ด์ ํธ ์ ์๊ฐ ์ฝ๋์์ API ํ๋ผ๋ฏธํฐ๋ก โ ์ค์ผ์คํธ๋ ์ด์ ์ Strands ์์ง์ด ๋์ ์ํ
- API 2๊ฐ โ CreateHarness ยท InvokeHarness
- ์ ์ธ ์คํ โ ๋ชจ๋ธ+๋๊ตฌ+๋ฉ๋ชจ๋ฆฌ+Skills
- Per-invocation Override โ ์ฌ๋ฐฐํฌ ์์ด ํธ์ถ๋ง๋ค ๋ณ๊ฒฝ
- ๊ธฐ๋ณธ ๋ชจ๋ธ Claude Sonnet 4.6
์ง์ ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๋ฉด Runtime, ์ ์ธ ๋ฒ์๋ก ์ถฉ๋ถํ๋ฉด Harness โ ์ ํ ๊ธฐ์คยท์คํ ๋ฌธ๋ฒยทexport ํ์ด๋ธ๋ฆฌ๋ ๊ฒฝ๋ก๋ Harness ์ ๋ด ๋ชจ๋์์ ๋ค๋ฃน๋๋ค.
Gateway
์์ด์ ํธ๊ฐ ๋๊ตฌยท์์ด์ ํธยท๋ชจ๋ธ์ ์ ๊ทผํ๋ ๋จ์ผ ๋ณด์ ์ง์ ์
AgentCore Gateway
์ฌ์ฉ์ ํธ๋ํฝ์ ํ๋ก ํธ๋์ด๊ฐ ์๋๋ผ ๋๊ตฌ ํ๋ธ โ ์ธ์ฆยท์ ์ฑ ยท๊ด์ธก์ฑ์ด ์ค์์์ ์๋ ์ ์ฉ
- ๋๊ตฌ ์ถ๊ฐ = Target ๋ฑ๋ก โ ์์ด์ ํธ ์ฌ๋ฐฐํฌ ๋ถํ์
- ์ฝ์ Target protocol 4์ข โ MCP ยท Inference ยท Agent(A2A) ยท Custom
- ๋นํธ์ธ ์ปค๋ฅํฐ โ Web Search ยท Knowledge Bases
- ์๋งจํฑ ๋๊ตฌ ๊ฒ์ โ ์์ฐ์ด๋ก ๊ด๋ จ ๋๊ตฌ๋ง ์ ๋ณ
LambdaยทREST APIยท๋ค๋ฅธ ์์ด์ ํธ๊ฐ ์ ๋ถ MCP ๋๊ตฌ๊ฐ ๋ฉ๋๋ค โ Target ๊ตฌ์ฑยทInterceptorยท์ธ์ฆ ์ฐ๋์ Gateway ์ ๋ด ๋ชจ๋์์ ๋ค๋ฃน๋๋ค.
Memory
๋จ๊ธฐ(STM)์ ์ฅ๊ธฐ(LTM) 2๊ณ์ธต์ผ๋ก ์์ด์ ํธ์ ๊ธฐ์ต์ ๊ด๋ฆฌํ์ผ๋ก ์ ๊ณต
AgentCore Memory
์ธ์ ์์ ์๋ณธ ๋ํ๋ STM์, ๋ํ์์ ์๋ ์ถ์ถํ ๊ธฐ์ต์ LTM์ โ ์ ์ฅยท์ถ์ถยท๊ฒ์ ํ์ดํ๋ผ์ธ์ด ๊ด๋ฆฌํ
- STM โ ์ธ์ ๋ด ์๋ณธ ๋ํ ์ด๋ ฅ, ๋ง๋ฃ 7~365์ผ
- LTM โ ๋ํ์์ ์๋ ์ถ์ถ๋ ์ธ์ ๊ฐ ๊ธฐ์ต
- ์ถ์ถ ์ ๋ต 4์ข โ Semantic ยท Summary ยท UserPreference ยท Episodic
- Strands ์ฐ๊ฒฐ โ AgentCoreMemorySessionManager ํ ์ค
"์ด ๋ํ"๋ STM์ด, "์ด ์ฌ์ฉ์"๋ LTM์ด ๊ธฐ์ตํฉ๋๋ค โ ์ ๋ต๋ณ ๋์ยท๋ค์์คํ์ด์คยท์ฝ๋ ์ฐ๋์ Memory ์ ๋ด ๋ชจ๋์์ ๋ค๋ฃน๋๋ค.
Identity & Policy
Inbound ยท Outbound ยท Cedar ยท Guardrails
Identity & Policy
๋๊ฐ ์์ด์ ํธ๋ฅผ ํธ์ถํ๊ณ , ์์ด์ ํธ๊ฐ ๋ฌด์์ ํธ์ถํ ์ ์๋๊ฐ โ ๋ ๋ฐฉํฅ์ ํต์
Identity & Policy
์ธ์ฆ(Identity)์ ๋ฐฉํฅ์ผ๋ก ๋๋๊ณ , ๊ถํ(Policy)์ ๋๊ตฌ ๋จ์๋ก ์ ์ธํฉ๋๋ค
- Inbound โ ์์ด์ ํธ๋ก ๋ค์ด์ค๋ ํธ์ถ์ ์ธ์ฆ
- Outbound โ ์์ด์ ํธ๊ฐ ๋๊ฐ๋ ํธ์ถ์ ์๊ฒฉ ์ฆ๋ช
- Cedar โ ๋๊ตฌ ์ ๊ทผ ์ ์ฑ (ํ์ฉยท์ฐจ๋จ)
- Guardrails โ ์ฝํ ์ธ ์์ ํํฐ
๋ค์ด์ค๋ ํธ์ถ๊ณผ ๋๊ฐ๋ ํธ์ถ์ ์๊ฒฉ ์ฆ๋ช ์ ์์ ํ ๋ถ๋ฆฌ โ ์์ด์ ํธ ์ฝ๋์ ์ํฌ๋ฆฟ์ด ๋จ์ง ์์ต๋๋ค.
์ธ์ฆ 2๋ฐฉํฅ
๋ค์ด์ค๋ ํธ์ถ์ authorizer๊ฐ, ๋๊ฐ๋ ํธ์ถ์ Credential Provider๊ฐ โ ์๊ฒฉ ์ฆ๋ช ์ ๋ฐฉํฅ๋ณ๋ก ๋ถ๋ฆฌ ๊ด๋ฆฌ
Inbound (๋๊ฐ ์์ด์ ํธ๋ฅผ ํธ์ถ?)
- AWS_IAM (SigV4) โ AWS ์๋น์คยท์ญํ
- CUSTOM_JWT โ Cognitoยท์ธ๋ถ IdP์ ์ต์ข ์ฌ์ฉ์
- AUTHENTICATE_ONLY โ ์ธ์ฆ๋ง ์ํ
- NONE โ ๊ฐ๋ฐ ์ ์ฉ (ํ๋ก๋์ ๊ธ์ง)
RuntimeยทGateway ์์ฑ ์ authorizerType์ผ๋ก ์ง์ ํฉ๋๋ค โ AWS_IAM, CUSTOM_JWT, NONE, AUTHENTICATE_ONLY 4์ข . JWT๋ Cognito Quick Create ๋๋ ๊ธฐ์กด IdP Discovery URL์ ์ ๋ ฅํฉ๋๋ค.
Outbound (์์ด์ ํธ๊ฐ ๋ญ ํธ์ถ?)
- OAuth 2.0 โ SaaS API (Slack, GitHub)
- API Key โ ์ธ๋ถ MCP ์๋ฒ
- IAM Role โ AWS ์๋น์ค
- Identity ์๋น์ค์์ ๊ด๋ฆฌ
Token Vault๊ฐ ์๊ฒฉ ์ฆ๋ช ์ ์ํธํ ๋ณด๊ดํ๊ณ OAuth ๊ฐฑ์ ๋ ์๋์ ๋๋ค. ์์ด์ ํธ ์ฝ๋์ ์ํฌ๋ฆฟ ๋ ธ์ถ ์์ด @requires_access_token ๋ฐ์ฝ๋ ์ดํฐ๋ก ํฌ๋ช ํ๊ฒ ์ฃผ์ ๋ฉ๋๋ค.
Outbound ์ฃผ์ โ @requires_access_token
ํ ํฐ์ Token Vault๊ฐ ๊ด๋ฆฌ โ ์ฝ๋๋ ๋ฐ์ฝ๋ ์ดํฐ ํ๋๋ก ์ฃผ์ ๋ง
ํต์ฌ ํฌ์ธํธ
- provider_name
- ์ฌ์ ๋ฑ๋กํ Credential Provider โ OAuth ํด๋ผ์ด์ธํธ ์ ๋ณด๋ Vault์
- auth_flow
- M2M(๋จธ์ ๊ฐ) ๋๋ USER_FEDERATION(์ฌ์ฉ์ ์์ 3LO)
- access_token ์ฃผ์
- ๋ฐ์ฝ๋ ์ดํฐ๊ฐ ํ ํฐ์ ๋ฐ์ ํค์๋ ์ธ์๋ก ์ ๋ฌ โ ์ฝ๋์ ์ํฌ๋ฆฟ 0
- ๊ฐฑ์ ์๋
- ๋ง๋ฃยท๋กํ ์ด์ ์ Identity ์๋น์ค๊ฐ ์ฒ๋ฆฌ โ ์ฌ๋ฐฐํฌ ๋ถํ์
์ฝ๋
from bedrock_agentcore.identity import requires_access_token
# ๋ฐ์ฝ๋ ์ดํฐ๊ฐ Token Vault์์ ํ ํฐ์ ๋ฐ์ ์ฃผ์
@requires_access_token(
provider_name="github-provider",
scopes=["repo", "read:user"],
auth_flow="USER_FEDERATION", # ์ฌ์ฉ์ ์์ (3LO)
)
async def fetch_private_repos(*, access_token: str):
# ์ฃผ์
๋ ํ ํฐ์ผ๋ก ์ธ์ฆ ํธ์ถ โ ์ํฌ๋ฆฟ ํ๋์ฝ๋ฉ ์์
headers = {"Authorization": f"Bearer {access_token}"}
...
Cedar ์ ์ฑ
๋๊ฐ ์ด๋ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์๋์ง โ ํ๋กฌํํธ๊ฐ ์๋๋ผ ์ธํ๋ผ ๋ ๋ฒจ์์ ์ ์ด
ํต์ฌ ํฌ์ธํธ
- permit / forbid
- ํ์ฉยท๊ฑฐ๋ถ ์ ์ธ โ forbid๊ฐ permit๋ณด๋ค ์ฐ์
- principal ยท when
- ๋๊ฐยท์ด๋ค ์กฐ๊ฑด์์ โ when { context.input.ํ๋ } ์กฐ๊ฑด์ผ๋ก ์ ์ฝ
- action ยท resource
- action์ด ๊ณง ๋๊ตฌ(AgentCore::Action::"{Target}___{๋๊ตฌ}"), resource๋ Gateway ARN
- LOG_ONLY / ENFORCE
- Policy engine์ Gateway์ ์ฐ๊ฒฐํ ๋์ ๋ชจ๋ โ ๊ด์ฐฐ๋ง ๋๋ ์ค์ ์ฐจ๋จ
์ ์ฑ
// ํ์ฉ โ restart_server ๋๊ตฌ ํธ์ถ (action์ด ๊ณง Target___๋๊ตฌ)
permit(
principal,
action == AgentCore::Action::"OpsTarget___restart_server",
resource == AgentCore::Gateway::"<gateway-arn>"
);
// ์ฐจ๋จ โ delete_database ํธ์ถ์ ๋ช
์์ ์ผ๋ก ๊ฑฐ๋ถ (forbid ์ฐ์ )
forbid(
principal,
action == AgentCore::Action::"OpsTarget___delete_database",
resource == AgentCore::Gateway::"<gateway-arn>"
);
Guardrails ์ฐ๋
AgentCore Policy์์ Bedrock Guardrails๋ฅผ ์ง์ ๋ถ์ฐฉ
์ฝํ ์ธ ํํฐ
์ ํด ์ฝํ ์ธ ์ฐจ๋จ โ HATE, VIOLENCE, SEXUAL
PII ๋ง์คํน
๊ฐ์ธ์ ๋ณด ์๋ ๋ง์คํน โ ์ด๋ฆ, ์ ํ๋ฒํธ, ์ฃผ๋ฏผ๋ฒํธ
์ฃผ์ ๊ฑฐ๋ถ
๊ธ์ง ์ฃผ์ ์ค์ โ ๊ฒฝ์์ฌ ๋น๊ต, ๋ด๋ถ ์ ๋ณด ๋์ถ
Cedar๊ฐ ํ๋(๋๊ตฌ ์ ๊ทผ)์, Guardrails๊ฐ ๋ฐํ(์ฝํ ์ธ )๋ฅผ ํต์ โ Policy ๋ ์ด์ด ํ ๊ณณ์์ ํตํฉ ๊ด๋ฆฌํฉ๋๋ค.
์ค์ต
AgentCore CLI ์ค์น โ ์ฒซ ์์ด์ ํธ๋ฅผ ๋ก์ปฌ์์
์ค์ต โ AgentCore CLI ์ค์น
AgentCore CLI๋ฅผ ์ค์นํ๊ณ ์์ด์ ํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํด ๋ก์ปฌ์์ ํ ์คํธํฉ๋๋ค. ๋ฐฐํฌ ์ค์ต์ Runtime ์ ๋ด ๋ชจ๋์์ ์ด์ด์ง๋๋ค.
ํ์ต ๋ชฉํ
- AgentCore CLI ์ค์น
- agentcore create๋ก ์์ด์ ํธ ํ๋ก์ ํธ ์์ฑ
- agentcore dev๋ก ๋ก์ปฌ ํ ์คํธ
Runtime๋ถํฐ Policy๊น์ง โ ์์ด์ ํธ ์ธํ๋ผ์ ์์ ๊ด๋ฆฌํ ์ ํ