

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 制限事項
<a name="pipelines-step-decorator-limit"></a>

以降のセクションでは、パイプラインステップに `@step` デコレータを使用する際に注意すべき制限事項について説明します。

## 関数引数の制限
<a name="pipelines-step-decorator-arg"></a>

`@step` でデコレートした関数に入力引数を渡すと、以下の制限が適用されます。
+ `DelayedReturn` オブジェクト、(他のタイプのステップの) `Properties` オブジェクト、`Parameter`、`ExecutionVariable` オブジェクトを、`@step` でデコレートした関数に引数として渡すことができます。ただし、`@step` でデコレートした関数は引数としての `JsonGet` オブジェクトと `Join` オブジェクトをサポートしていません。
+ `@step` 関数からパイプライン変数に直接アクセスすることはできません。以下の例ではエラーが発生します。

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func():
      print(param)
  
  func() # this raises a SerializationError
  ```
+ パイプライン変数を別のオブジェクトにネストして、`@step` 関数に渡すことはできません 以下の例ではエラーが発生します。

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func(arg):
      print(arg)
  
  func(arg=(param,)) # this raises a SerializationError because param is nested in a tuple
  ```
+ 関数の入力と出力はシリアル化されるため、関数からの入出力として渡すことができるデータのタイプには制限があります。詳細については、「[リモート関数を呼び出す](train-remote-decorator-invocation.md)」の「*Data serialization and deserialization*」セクションを参照してください。`@step` でデコレートした関数にも同じ制限が適用されます。
+ boto クライアントを持つオブジェクトはシリアル化できないため、`@step` でデコレートした関数への入出力としてこのようなオブジェクトを渡すことはできません。例えば、`Estimator`、`Predictor`、`Processor` などの SageMaker Python SDK クライアントクラスはシリアル化できません。

## 関数のインポート
<a name="pipelines-step-decorator-best-import"></a>

ステップに必要なライブラリは、関数の外部に配置するのではなく内部にインポートする必要があります。グローバルスコープでインポートすると、関数をシリアル化する際にインポートの衝突が発生するリスクがあります。例えば、`sklearn.pipeline.Pipeline` は `sagemaker.workflow.pipeline.Pipeline` に上書きされる可能性があります。

## 関数の戻り値の子メンバーの参照
<a name="pipelines-step-decorator-best-child"></a>

`@step` でデコレートした関数の戻り値の子メンバーを参照する場合、以下の制限が適用されます。
+ `DelayedReturn` オブジェクトがタプル、リスト、またはディクトである場合は、次の例に示されるとおり、子メンバーを `[]` で参照できます。

  ```
  delayed_return[0]
  delayed_return["a_key"]
  delayed_return[1]["a_key"]
  ```
+ 関数を呼び出す際に基となるタプルまたはリストの正確な長さが不明であるため、タプルの出力またはリストの出力はアンパックできません。以下の例ではエラーが発生します。

  ```
  a, b, c = func() # this raises ValueError
  ```
+ `DelayedReturn` オブジェクトを反復処理することはできません。以下の例ではエラーが発生します。

  ```
  for item in func(): # this raises a NotImplementedError
  ```
+ 任意の子メンバーを '`.`' で参照することはできません。以下の例ではエラーが発生します。

  ```
  delayed_return.a_child # raises AttributeError
  ```

## サポートされていない既存のパイプライン機能
<a name="pipelines-step-decorator-best-unsupported"></a>

`@step` デコレータは、以下のパイプライン機能では使用できません。
+ [Pipeline ステップのキャッシュ](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-caching.html)
+ [プロパティファイル](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-propertyfile.html#build-and-manage-propertyfile-property)