You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(py): ensure bundle target only bundles required dependencies (#235)
* fix(py): ensure bundle target only bundles required dependencies
The bundle target for FastAPI and Python lambda functions was including the dependencies for all
packages in the workspace, rather than just those for the target package. Updated to include only
the appropriate dependencies.
Also fix the python documentation on local dependencies as it was incorrect.
* docs: update translations
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Copy file name to clipboardExpand all lines: docs/src/content/docs/en/guides/python-project.mdx
+17-5Lines changed: 17 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -56,13 +56,25 @@ Add your Python source code in the `<module-name>` directory.
56
56
57
57
### Importing your Library Code in Other Projects
58
58
59
-
Since [UV workspaces](https://docs.astral.sh/uv/concepts/projects/workspaces/) are set up for you, you can reference your Python project from any other Python project in your workspace:
59
+
Use the `add` target to add a dependency to a Python project.
Suppose we have created two python projects, `my_app` and `my_lib`. These will have fully qualified project names of `my_scope.my_app` and `my_scope.my_lib`, and by default will each have module names of `my_scope_my_app` and `my_scope_my_lib`.
62
+
63
+
For `my_app` to depend on `my_lib`, we can run the following command:
We use the fully qualified project name for both the dependant and dependee. We can use the shorthand syntax for the project we want to add the dependency to, but must fully qualify the name of the project to depend on.
Above, `my_library` is the module name, `hello` corresponds to the Python source file `hello.py`, and `say_hello` is a method defined in `hello.py`
77
+
Above, `my_scope_my_lib` is the module name for the lib, `hello` corresponds to the Python source file `hello.py`, and `say_hello` is a method defined in `hello.py`
66
78
67
79
### Dependencies
68
80
@@ -87,7 +99,7 @@ When you use your Python project as runtime code (for example as the handler for
Copy file name to clipboardExpand all lines: docs/src/content/docs/es/get_started/tutorials/dungeon-game/3.mdx
+39-40Lines changed: 39 additions & 40 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
title: "Juego de Mazmorra con IA"
3
-
description: "Un tutorial de cómo construir un juego de aventuras de mazmorra con IA utilizando el @aws/nx-plugin."
3
+
description: "Un tutorial de cómo construir un juego de aventuras de mazmorra con IA usando el @aws/nx-plugin."
4
4
---
5
5
6
6
@@ -29,15 +29,15 @@ import gameConversationPng from '@assets/game-conversation.png'
29
29
Asegúrate de haber otorgado acceso al modelo **Anthropic Claude 3.5 Sonnet v2** siguiendo los pasos descritos en [esta guía](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html).
30
30
</Aside>
31
31
32
-
La StoryApi consta de una única API `generate_story` que, dado un `Game` y una lista de `Action`s como contexto, generará una progresión de la historia. Esta API se implementará como una API de streaming en Python/FastAPI y demostrará cómo realizar modificaciones al código generado para adaptarlo a su propósito.
32
+
La StoryApi consta de una única API `generate_story` que, dado un `Game` y una lista de `Action`s como contexto, generará una progresión de la historia. Esta API se implementará como una API de streaming en Python/FastAPI y además demostrará cómo se pueden realizar modificaciones al código generado para adaptarlo a su propósito.
33
33
34
34
### Implementación de la API
35
35
36
36
Para crear nuestra API, primero necesitamos instalar algunas dependencias adicionales:
37
37
38
-
-`boto3` se usará para interactuar con Amazon Bedrock;
39
-
-`uvicorn` se utilizará para iniciar nuestra API en combinación con el [Lambda Web Adapter (LWA)](https://github.com/awslabs/aws-lambda-web-adapter);
40
-
-`copyfiles` es una dependencia de npm necesaria para soportar la copia multiplataforma de archivos al actualizar nuestra tarea `bundle`.
38
+
-`boto3` se usará para llamar a Amazon Bedrock;
39
+
-`uvicorn` se usará para iniciar nuestra API en conjunto con el [Lambda Web Adapter (LWA)](https://github.com/awslabs/aws-lambda-web-adapter).
40
+
-`copyfiles` es una dependencia de npm que necesitaremos para soportar la copia multiplataforma de archivos al actualizar nuestra tarea `bundle`.
41
41
42
42
Para instalar estas dependencias, ejecuta los siguientes comandos:
43
43
@@ -54,28 +54,28 @@ Ahora reemplazaremos el contenido de los siguientes archivos en `packages/story_
El cambio anterior en `init.py` simplemente elimina el middleware CORS para evitar conflictos con el manejo de cabeceras CORS propio de las Lambda Function URLs.
57
+
El cambio anterior en `init.py` simplemente elimina el middleware CORS para evitar conflictos con el manejo propio de cabeceras CORS de Lambda Function URL.
58
58
:::
59
59
60
60
</TabItem>
61
61
</Tabs>
62
62
63
63
Analizando el código anterior:
64
64
65
-
- Usamos la configuración `x-streaming` para indicar que es una API de streaming al generar nuestro SDK cliente. Esto nos permitirá consumir esta API en modo streaming manteniendo la seguridad de tipos.
66
-
- Nuestra API simplemente devuelve un flujo de texto definido por `media_type="text/plain"`y`response_class=PlainTextResponse`
65
+
- Usamos la configuración `x-streaming` para indicar que esta es una API de streaming cuando generemos nuestro SDK cliente. ¡Esto nos permitirá consumir esta API en modo streaming manteniendo la seguridad de tipos!
66
+
- Nuestra API simplemente devuelve un flujo de texto definido tanto por `media_type="text/plain"`como por`response_class=PlainTextResponse`
67
67
68
68
:::note
69
-
Cada vez que realices cambios en tu FastAPI, necesitarás reconstruir el proyecto para ver esos cambios reflejados en el cliente generado en tu sitio web.
69
+
Cada vez que realices cambios en tu FastAPI, necesitarás reconstruir tu proyecto para ver esos cambios reflejados en el cliente generado en tu sitio web.
70
70
71
-
Haremos algunos cambios más antes de reconstruir.
71
+
Haremos algunos cambios más a continuación antes de reconstruir.
72
72
:::
73
73
74
74
### Infraestructura
75
75
76
-
La <Linkpath="get_started/tutorials/dungeon-game/1#game-ui-infrastructure">infraestructura configurada previamente</Link> asume que todas las APIs usan API Gateway integrado con funciones Lambda. Para nuestra `story_api` no queremos usar API Gateway ya que no soporta respuestas en streaming. En su lugar, usaremos una [Lambda Function URL configurada con response streaming](https://docs.aws.amazon.com/lambda/latest/dg/configuration-response-streaming.html).
76
+
La <Linkpath="get_started/tutorials/dungeon-game/1#game-ui-infrastructure">infraestructura que configuramos anteriormente</Link> asume que todas las APIs tienen una API Gateway integrada con funciones Lambda. Para nuestra `story_api` no queremos usar API Gateway ya que no soporta respuestas en streaming. En su lugar, usaremos una [Lambda Function URL configurada con response streaming](https://docs.aws.amazon.com/lambda/latest/dg/configuration-response-streaming.html).
77
77
78
-
Para implementar esto, actualizaremos primero nuestros constructos de CDK:
78
+
Para soportar esto, primero actualizaremos nuestros constructos de CDK de la siguiente manera:
79
79
80
80
<Tabs>
81
81
<TabItemlabel="story-api.ts">
@@ -86,7 +86,7 @@ Para implementar esto, actualizaremos primero nuestros constructos de CDK:
86
86
</TabItem>
87
87
</Tabs>
88
88
89
-
Ahora actualizaremos la `story_api` para soportar el despliegue con [Lambda Web Adapter](https://github.com/awslabs/aws-lambda-web-adapter):
89
+
Ahora actualizaremos la `story_api` para soportar el despliegue con [Lambda Web Adapter](https://github.com/awslabs/aws-lambda-web-adapter).
90
90
91
91
<Tabs>
92
92
<TabItemlabel="run.sh">
@@ -106,7 +106,7 @@ Ahora actualizaremos la `story_api` para soportar el despliegue con [Lambda Web
Esto **no se recomienda** ya que podrías tener stacks separados para diferentes etapas de despliegue (ej. infra-prod). En ese caso, el flag `--all`intentaría desplegar todo, pudiendo resultar en despliegues no deseados.
148
+
Esto **no se recomienda** ya que podrías elegir separar tus etapas de despliegue como stacks separados `ej. infra-prod`. En este caso, el flag `--all`intentará desplegar todos los stacks lo que puede resultar en despliegues no deseados.
149
149
150
150
</Drawer>
151
151
152
-
Una vez completado el despliegue, verás salidas similares a estas _(algunos valores fueron omitidos)_:
152
+
Una vez completado el despliegue, deberías ver algunas salidas similares a las siguientes _(algunos valores han sido omitidos)_:
153
153
154
154
```bash
155
155
dungeon-adventure-infra-sandbox
@@ -168,16 +168,15 @@ dungeon-adventure-infra-sandbox.UserIdentityUserIdentityIdentityPoolIdXXX = regi
<li>Iniciando una instancia local del servidor FastAPI e invocando las APIs con`curl`</li>
173
+
<li>Iniciando una instancia local del servidor FastAPI e invocando las APIs usando`curl`.</li>
174
174
<li>
175
-
<Drawertitle="curl con Sigv4 habilitado"trigger="Llamar directamente a la API desplegada usando curl con Sigv4">
175
+
<Drawertitle="Curl con Sigv4 habilitado"trigger="Llamando a la API desplegada usando curl con Sigv4 directamente">
176
176
177
177
<Tabs>
178
178
<TabItemlabel="Bash/Linux/macOS">
179
-
Puedes agregar este script a tu archivo `.bashrc` (y hacer `source`) o pegarlo directamente en la terminal:
180
-
179
+
Puedes agregar el siguiente script a tu archivo `.bashrc` (y hacer `source`) o simplemente pegarlo en la misma terminal donde quieras ejecutar el comando.
181
180
```bash
182
181
// ~/.bashrc
183
182
acurl () {
@@ -188,45 +187,45 @@ acurl () {
188
187
}
189
188
```
190
189
191
-
Ejemplos de uso:
190
+
Luego para hacer una petición curl autenticada con sigv4, puedes invocar `acurl` como en los siguientes ejemplos:
192
191
193
192
###### API Gateway
194
193
```bash
195
194
acurl ap-southeast-2 execute-api -X GET https://xxx
196
195
```
197
196
198
-
###### Lambda Function URL con streaming
197
+
###### URL de función Lambda con streaming
199
198
```bash
200
199
acurl ap-southeast-2 lambda -N -X POST https://xxx
201
200
```
202
201
</TabItem>
203
202
<TabItemlabel="Windows PowerShell">
204
-
Agrega esta función a tu perfil de PowerShell o pégala en la sesión actual:
205
-
203
+
Puedes agregar la siguiente función a tu perfil de PowerShell o simplemente pegarla en la misma sesión donde quieras ejecutar el comando.
0 commit comments