> ## Documentation Index
> Fetch the complete documentation index at: https://ikun.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 添加密钥

密钥管理是应用程序安全的关键部分，应认真对待。

本地密钥定义在 `worspace/secrets` 目录中，该目录已从版本控制中排除（参见 `.gitignore`）。其内容应与密码的安全级别同等对待。

生产环境密钥由 [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 管理。

<Note>
  如果您缺少 secrets 目录，请复制 `workspace/example_secrets`
</Note>

## 开发密钥

本地运行的应用程序可以通过 `yaml` 文件读取密钥，例如：

```python dev_resources.py theme={null}
dev_fastapi = FastApi(
    ...
    # 从 secrets/dev_app_secrets.yml 读取密钥
    secrets_file=ws_settings.ws_root.joinpath("workspace/secrets/dev_app_secrets.yml"),
)
```

## 生产密钥

`AWS Secrets` 用于管理生产环境密钥，这些密钥由生产环境应用程序读取。

```python prd_resources.py theme={null}
# -*- 生产环境应用程序的密钥
prd_secret = SecretsManager(
    ...
    # 从 workspace/secrets/prd_app_secrets.yml 创建密钥
    secret_files=[
        ws_settings.ws_root.joinpath("workspace/secrets/prd_app_secrets.yml")
    ],
)

# -*- 生产环境数据库的密钥
prd_db_secret = SecretsManager(
    ...
    # 从 workspace/secrets/prd_db_secrets.yml 创建密钥
    secret_files=[ws_settings.ws_root.joinpath("workspace/secrets/prd_db_secrets.yml")],
)
```

在生产环境应用程序中使用以下方式读取密钥：

<CodeGroup>
  ```python FastApi theme={null}
  prd_fastapi = FastApi(
      ...
      aws_secrets=[prd_secret],
      ...
  )
  ```

  ```python RDS theme={null}
  prd_db = DbInstance(
      ...
      aws_secret=prd_db_secret,
      ...
  )
  ```
</CodeGroup>

生产环境资源也可以通过 yaml 文件读取密钥，但我们强烈建议使用 [AWS Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)。
