aws / aws/aws-sdk-python

Breaking changes in 0.10.0: async client configuration

未关闭
#84 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
announcement
主要语言
Python
星标
169
派生
19
平均合并
1 天 20 小时
30 天内合并 PR
11

描述

## Breaking changes in `0.10.0` release

Starting with version `0.10.0`, the `aws-sdk-*` client packages include breaking changes to client configuration.

### New configuration object

The synchronous `Config` class previously exported from each service package has been replaced with a service-specific asynchronous configuration class.

For example, for Bedrock Runtime:

```python
# Before
from aws_sdk_bedrock_runtime.config import Config
```

is now:

```python
# 0.10.0 and later
from aws_sdk_bedrock_runtime.config import AsyncBedrockRuntimeConfig
```

### Configuration is now asynchronous

Configuration objects must now be created using the asynchronous `resolve()` method. Directly instantiating the configuration class is not supported and results in an error.

```python
# Incorrect
config = AsyncBedrockRuntimeConfig(
region="us-west-2",
)

# Raises
smithy_aws_core.config.exceptions.ConfigError: AsyncBedrockRuntimeConfig cannot be constructed directly. Use `await AsyncBedrockRuntimeConfig.resolve(...)` instead.
```

Instead, resolve the configuration before passing it to the client:

```python
from aws_sdk_bedrock_runtime.config import AsyncBedrockRuntimeConfig

config = await AsyncBedrockRuntimeConfig.resolve(
region="us-west-2",
)
```

This change allows the SDK to perform configuration resolution that requires I/O, such as reading shared AWS configuration and credentials files, without blocking the event loop.

Configuration values are resolved from explicit overrides passed to `resolve()`, environment variables, and shared AWS configuration and credentials files. If no configuration is provided when constructing a client, the SDK automatically resolves one for you.

### Plugins

Configuration plugins must now receive the service-specific asynchronous configuration type, `AsyncConfig`, instead of the previous `Config` type.

For example:

```python
# Before
from aws_sdk_bedrock_runtime.config import Config

def my_plugin(config: Config) -> None:
...
```

is now:

```python
# 0.10.0 and later
from aws_sdk_bedrock_runtime.config import AsyncBedrockRuntimeConfig

def my_plugin(config: AsyncBedrockRuntimeConfig) -> None:
...
```

### Migrating existing applications

Update configuration usage as follows:

1. Replace imports of `Config` with the service-specific `AsyncConfig`.
2. Replace direct configuration construction with `await AsyncConfig.resolve(...)`.
3. Ensure explicit configuration resolution occurs within an asynchronous context.
4. Update configuration plugins to accept the service-specific `AsyncConfig` type instead of `Config`.

For example:

```python
# Before
from aws_sdk_bedrock_runtime.client import AsyncBedrockRuntimeClient
from aws_sdk_bedrock_runtime.config import Config

def my_plugin(config: Config) -> None:
...

config = Config(
region="us-west-2",
)

client = AsyncBedrockRuntimeClient(
config=config,
plugins=[my_plugin],
)
```

becomes:

```python
# 0.10.0 and later
from aws_sdk_bedrock_runtime.client import AsyncBedrockRuntimeClient
from aws_sdk_bedrock_runtime.config import AsyncBedrockRuntimeConfig

def my_plugin(config: AsyncBedrockRuntimeConfig) -> None:
...

config = await AsyncBedrockRuntimeConfig.resolve(
region="us-west-2",
)

client = AsyncBedrockRuntimeClient(
config=config,
plugins=[my_plugin],
)
```

### Installing the latest version

Upgrade an existing client package with `pip`:

```bash
python -m pip install --upgrade aws-sdk-
```

For example:

```bash
python -m pip install --upgrade aws-sdk-bedrock-runtime
```

To explicitly require version `0.10.0` or later:

```bash
python -m pip install "aws-sdk-bedrock-runtime>=0.10.0"
```

### Pinning versions

To avoid unexpected breaking changes when installing or deploying your application, we recommend pinning `aws-sdk-*` client packages to a specific version or compatible version range.

To pin to an exact version:

```bash
python -m pip install "aws-sdk-bedrock-runtime==0.10.0"
```

To allow compatible patch releases while avoiding newer minor releases:

```bash
python -m pip install "aws-sdk-bedrock-runtime~=0.10.0"
```

This is important while the SDK is pre-`1.0.0`, when minor releases may include breaking changes.

贡献指南

打开贡献指南

调研方向

未指定 repository 文件或测试。先检查版本 0.10.0 的发行说明或迁移文档维护在哪里,然后将文档中记录的 AsyncConfig 导入、resolve() 的用法、plugin 类型和版本固定示例与 issue 进行比较;完成标准是将 breaking-change guidance 发布到项目既定的文档位置。

由索引模型根据 Issue 内容生成。

评估

技术栈
aws, python
领域
documentation
Issue 类型
文档
难度
3/5
预计耗时
1-2 天
活跃度
活跃
描述清晰度
需要澄清
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。