[PYTHON] 3 kleine Geschichten, die ich mit Chalice überprüft habe

1. So fügen Sie statische Dateien in Lambda-Funktionen ein

$ tree -a .
.
├── .chalice
│   └── config.json
├── .gitignore
├── app.py
├── chalicelib
│   └── env.yml
└── requirements.txt

Bei der Bereitstellung mit Kelch werden die Dateiberechtigungen wie bei Linux / Mac vererbt. Beachten Sie daher, dass beim Bereitstellen einer Datei wie "750" die Berechtigung zur Laufzeit verweigert wird, wenn Sie versuchen, diese Datei zu lesen.

2. IAM-Richtlinie wird nicht automatisch generiert / So legen Sie die Richtlinie selbst fest

Als ich es nachgeschlagen habe, war es, weil ** nur Programme, die boto3.client verwenden, automatisch generiert wurden **. Es gibt auch eine Möglichkeit, Ressourcen in boto3 zu verwenden, aber selbst wenn Sie sie verwenden, unterliegt sie keiner automatischen IAM-Generierung. Alle meine Programme verwendeten boto3.resource.

Da die IAM-Richtlinie automatisch generiert wird, kann ** Verwenden Sie immer boto3.client **, wenn Sie boto3 mit Chalice verwenden, eine Richtlinie sein. Wenn Sie dagegen eine vorhandene IAM-Rolle verwenden oder die Richtlinienbeschreibung selbst verwalten möchten, deaktivieren Sie "autogen_policy" in ".chalice / config.json". Zum Beispiel:

json:.chalice/config.Auszug aus json


  "stages": {
    "dev": {
      "api_gateway_stage": "api",
      "autogen_policy": false
    }
  }

Wenn dies deaktiviert ist, lautet die Standardeinstellung "policy- .json" (in diesem Fall policy-dev.json) in ".chalice". Wenn Sie einen Alias angeben möchten, geben Sie den Dateinamen mit "iam_policy_file" an. Klicken Sie hier für eine ausführlichere Erklärung

json:.chalice/policy-dev.Schreiben Sie einfach die Zugriffsberechtigung in Rolle in JSON


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:*"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "xxxx-xxxx-xxxx-xxxx-1234"
    },
    {
        "Effect": "Allow",
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
        ],
        "Resource": "arn:aws:logs:*:*:*",
        "Sid": "xxxx-xxxx-xxxx-xxxx-1235"
    }
  ]
}

Wenn Sie eine externe Bibliothek usw. verwenden möchten, übernehmen Sie diese, wenn Sie boto3.resource verwenden. Aufgrund der IAM-Berechtigung können Sie die IAM-Rollen-ARN angeben und sie gewähren (iam_role_arn), wenn Sie überhaupt nicht über die IAM-Betriebsberechtigung verfügen.

Die Beschreibung, dass nur der Client die IAM-Richtlinie automatisch generieren kann, lautet beispielsweise Erläuterung in der AWS BlackBelt-Reihe Viel detaillierter als der Artikel](https://michimani.net/post/aws-about-auto-generate-iam-policy-in-chalice/), aber ich fand dies in der offiziellen Dokumentation Ich konnte die Beschreibung nicht finden. Es sollte in Ordnung sein, aber ...

3. CORS-kompatibel

Sie müssen das CORS entsprechend Ihrem Anwendungsfall einstellen, aber dies ist es ist schneller, die Formel zu lesen -cors-support) Die Erklärung ist substanziell.

Nachdem Sie die entsprechenden Einstellungen für die Instanz von "chalice.CORSConfig" vorgenommen haben, übergeben Sie die Einstellungen in der Regel an "cors" im Dekorator wie "@ app.route (path, cors = config)". Wird es gut machen.

Recommended Posts

3 kleine Geschichten, die ich mit Chalice überprüft habe
Ich habe versucht, AWS Chalice zu verwenden
Ich habe in der Bibliothek nach der Verwendung der Gracenote-API gesucht
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, Ipython zu verwenden
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe AWS Chalice berührt
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden