es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede copiar o sincronizar con s3 pero puedo listar (ls).

Estoy trabajando en un flujo de trabajo de acciones y quiero descargar un archivo desde s3. Nuestro s3 es a través de IBM Cloud y parece tener algunas sutilezas en su uso, por ejemplo, se debe agregar –endpoint-url {endpoint} entre el comando para llamar al cliente de aws y el comando de aws correspondiente, por ejemplo, aws –endpoint-url {endpoint} s3 ls

Aquí están los pasos relevantes en mi archivo workflow.yml:

trabajos:
recuperar-modelo-s3:
se ejecuta en: ubuntu-latest
pasos:
– nombre: checkout repositorio actual
usa: actions/checkout@master
– nombre: hacer directorio para sincronizar con s3
ejecutar: mkdir models
– nombre: s3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
AWS_S3_ENDPOINT: ${{ secrets.AWS_S3_ENDPOINT }}
AWS_REGION: ‘us-south’
ejecutar: |
aws –endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 ls ${{ secrets.AWS_S3_BUCKET }}
aws –endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 cp ${{ secrets.AWS_S3_BUCKET }}/regression_model_full.rds models/regression_model_full.rds
– nombre: directorio después

Hasta aquí funciona:

aws –endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 ls ${{ secrets.AWS_S3_BUCKET }}

En la salida de la consola de acciones, puedo ver los archivos en ${{ secrets.AWS_S3_BUCKET }}, incluido un archivo llamado regression_model_full.rds.

En la siguiente línea, intento descargarlo al ejecutor con:

aws –endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 cp ${{ secrets.AWS_S3_BUCKET }}/regression_model_full.rds models/regression_model_full.rds

Pero esto resulta en un error:

uso: aws s3 cp o o
Error: tipo de argumento no válido
Error: Proceso completado con código de salida 252.

Dado que puedo ejecutar el comando ls con s3 con éxito, estoy seguro de que mi conexión con s3 está bien. Pero, ¿por qué no puedo descargar con cp? ¿Mi sintaxis es incorrecta?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la sintaxis para el comando aws s3 cp es incorrecta. Según la documentación de AWS CLI, la sintaxis para el comando aws s3 cp es la siguiente:

    aws s3 cp or aws s3 cp or aws s3 cp

    En su caso, está intentando copiar un archivo desde un bucket de S3 a un directorio local, por lo que la sintaxis debería ser:

    aws --endpoint-url ${{ secrets.AWS_S3_ENDPOINT }} s3 cp ${{ secrets.AWS_S3_BUCKET }}/regression_model_full.rds models/regression_model_full.rds

Comments are closed.