콘텐츠로 이동

TypeScript Agent에서 DynamoDB로

connection 생성기는 TypeScript AgentTypeScript DynamoDB 프로젝트에 연결하여, 로컬 개발 시 두 프로젝트가 자동으로 함께 시작되도록 구성합니다.

이 생성기를 사용하기 전에 다음이 필요합니다:

  1. ts#agent 프로젝트
  2. ts#dynamodb 프로젝트
  1. 설치 Nx Console VSCode Plugin 아직 설치하지 않았다면
  2. VSCode에서 Nx 콘솔 열기
  3. 클릭 Generate (UI) "Common Nx Commands" 섹션에서
  4. 검색 @aws/nx-plugin - connection
  5. 필수 매개변수 입력
    • 클릭 Generate

    Agent 프로젝트를 소스로, DynamoDB 프로젝트를 타겟으로 선택하세요. 프로젝트에 여러 agent 컴포넌트가 포함된 경우 sourceComponent를 지정하여 명확히 구분하세요.

    매개변수 타입 기본값 설명
    sourceProject 필수 string - 소스 프로젝트
    targetProject 필수 string - 연결할 대상 프로젝트
    sourceComponent string - 연결을 시작할 소스 컴포넌트 (컴포넌트 이름, 소스 프로젝트 루트 기준 상대 경로, 또는 generator id). 프로젝트를 소스로 명시적으로 선택하려면 '.'을 사용하세요.
    targetComponent string - 연결할 대상 컴포넌트 (컴포넌트 이름, 대상 프로젝트 루트 기준 상대 경로, 또는 generator id). 프로젝트를 대상으로 명시적으로 선택하려면 '.'을 사용하세요.
    preferInstallDependencies boolean true 생성기 실행 후 의존성 설치를 선호할지 여부입니다. 여러 생성기를 일괄 처리할 때 설치를 연기하려면 false로 설정하세요 (후속 생성기가 Nx 프로젝트 그래프를 계산할 수 있도록 필요한 경우 설치는 여전히 실행됩니다); 마지막에 한 번만 설치합니다.

    생성기는 agent의 <agent-name>-dev 타겟을 project.json에서 업데이트하여 DynamoDB 프로젝트의 dev 타겟에 의존하도록 합니다. 소스 파일은 수정되지 않습니다.

    DynamoDB 패키지에서 엔티티 팩토리를 가져와 agent 정의 내에서 사용하세요:

    packages/my-service/src/my-agent/agent.ts
    import { createExampleEntity } from ':my-scope/my-table';
    export const getAgent = async () => {
    // ...
    return new Agent({
    tools: [
    tool({
    name: 'list_examples',
    description: 'List all example items',
    func: async () => {
    const entity = await createExampleEntity();
    const result = await entity.scan.go();
    return result.data;
    },
    }),
    ],
    });
    };

    agent의 Lambda 함수가 DynamoDB 테이블에 액세스할 수 있도록 인프라에서 필요한 권한을 부여하세요.

    packages/infra/src/stacks/application-stack.ts
    import { MyTable } from ':my-scope/common-constructs';
    const table = new MyTable(this, 'Table');
    const myAgent = new MyAgent(this, 'MyAgent');
    table.grantReadWriteData(myAgent);

    grantReadWriteData는 agent의 실행 역할에 DynamoDB 및 KMS 권한을 모두 부여합니다.

    connection 생성기는 프로젝트의 dev 타겟이 DynamoDB 프로젝트의 dev 타겟에 의존하도록 구성합니다. dev를 실행하면 DynamoDB Local이 프로젝트와 함께 자동으로 시작됩니다.

    LOCAL_DEV=true 환경 변수가 자동으로 설정되므로, getDynamoDBClient()resolveTableName()은 AWS 대신 로컬 DynamoDB Local 인스턴스에 연결됩니다.

    elopment” />