AWS Amplify:当资源已部分删除时如何删除环境?

22

TL;DR: 如何删除amplify环境,当服务的某些资源已经在控制台中手动删除?

我学习了egghead上关于 aws amplify CLI 的课程。不幸的是,它没有教你如何删除环境(尽管其他方面都很好!)。当时我通过谷歌搜索得知需要手动删除资源。我为使用过的资源尝试/执行了该操作。我删除了CLI的用户帐户(‍♂️),“删除”了Cognito用户池(但仍显示在amplify status中),删除了DynamoDB和AppSync API(也仍然显示在其中)。

现在,正如我提到的,当我运行amplify status时,我得到:

| Category | Resource name   | Operation | Provider plugin   |
| -------- | --------------- | --------- | ----------------- |
| Auth     | cognito559c5953 | No Change | awscloudformation |
| Api      | AmplifyTodoApp  | No Change | awscloudformation |

我曾经想过:既然我认为我已经删除了它们,它们是否仍然存在?

于是我进行了更多的谷歌搜索。现在看来,还有一个命令amplify delete,它会自动删除与您的amplify项目相关联的所有资源。由于我删除了用于该项目的帐户,因此该命令会抛出以下错误:

The security token included in the request is invalid.

我能否在不通过用户的情况下删除这些资源?这些资源是否仍然在线(因为我手动删除了它们,它们在控制台上不再显示 - 即使在CloudFront控制台中也是如此)?或者我必须删除整个AWS帐户?我不想因这些资源而最终产生巨额账单。

编辑:我还删除了S3存储桶。

编辑2:所以我设法使用另一个配置文件(通过更改local-aws-info.json),因此我不再收到安全请求失败错误。现在我收到以下错误:

Missing region in config

扩大状态仍会产生相同的响应。

4个回答

27

Amplify CLI通过对项目内的amplify/#current-cloud-backendamplify/backend文件夹进行差异比较来确定状态。因此,当您运行amplify status时看到的内容在您的情况下不准确。

如果您创建了多个环境(在不同的区域),请确保也删除它们。如果无法使用amplify delete,则最简单的方法是进入您已创建该环境的区域的云形成,在那里删除根堆栈,以确保删除该堆栈创建的所有资源。

注意:CLI在初始化时为authunauth用户创建角色,并为资源创建策略(如果存在,则不会产生任何费用)。如果您不需要这些角色和策略,可以将其删除。


我该如何删除已经与现在已删除的堆栈相关联的策略?这些被遗弃、无名和无家可归了吗? - Showcase Imagery
我认为你需要前往Cognito并将它们删除。 - SalahAdDin

5
当一些资源被手动删除(S3和Cloudformation),那么
$amplify delete  

提供以下功能:

Unable to remove env: dev because deployment bucket amplify-amplifyAPPName-dev-XYZ-deployment does not exist or has been deleted.
  
Stack has already been deleted or does not exist

请看这个:
C:user\samadhan\Amplify-Projects\amplifyapp-demo>amplify delete

? Are you sure you want to continue? This CANNOT be undone. (This will delete all the environments of the project from the cloud and wi
pe out all the local files created by Amplify CLI) Yes
- Deleting resources from the cloud. This may take a few minutes...
Deleting env: dev.
Unable to remove env: dev because deployment bucket amplify- 
amplifyinitdemo-dev-131139-deployment does not exist or has been deleted.

Stack has already been deleted or does not exist

\ Deleting resources from the cloud. This may take a few minutes...App 
 dfwx13s2bgtb1 not found.

App dfwx13s2bgtb1 not found.
√ Project already deleted in the cloud.
Project deleted locally.

在控制台中无法删除 App Amplify App,仍然显示,请查看以下截图: Amplify App Console Unable to Delete App Error

解决方案: 使用 AWS CLI 可以解决此问题。 步骤 1)确保已使用相同的 AWS 帐户配置 AWS CLI,如果没有,请创建 IAM 用户并将其配置为相同的区域

C:user\samadhan\Amplify-Projects\amplifyapp-demo>aws configure
AWS Access Key ID [****************HZHF]: ****************ICHK
AWS Secret Access Key [****************iBJl]:****************SnaX
Default region name [ap-south-1]: ap-south-1
Default output format [json]: json

第二步)使用以下AWS CLI命令。

C:user\samadhan\Amplify-Projects\amplifyapp-demo>>aws amplify help
Available Commands
******************
* create-app
* create-backend-environment
* create-deployment
* delete-app
* delete-backend-environment
* get-app
* list-apps
* list-backend-environments

C:user\samadhan\Amplify-Projects\amplifyapp-demo>aws amplify list-apps
{
    "apps": [
        {
        "appId": "d39pvb2qln4v7l",
        "appArn": "arn:aws:amplify:ap-south-1:850915XXXXX:apps/d39pvb2qln4v7l",
        "name": "react-amplify-demo-project",
            "tags": {},
            "platform": "WEB",
            "createTime": 1640206703.371,
            "updateTime": 1640206703.371,
            "environmentVariables": {
                "_LIVE_PACKAGE_UPDATES": "[{\"pkg\":\"@aws-amplify/cli\",\"type\":\"npm\",\"version\":\"latest\"}]"
            },
        {
            "appId": "d2jsl78ex1asqy",
            "appArn": "arn:aws:amplify:ap-south-1:85091xxxxxxxx:apps/d2jsl78ex1asqy",
            "name": "fullstackapp",
            "tags": {},
            "platform": "WEB",
            "createTime": 1640250148.974,
            "updateTime": 1640250148.974,
            "environmentVariables": {
                "_LIVE_PACKAGE_UPDATES": "[{\"pkg\":\"@aws-amplify/cli\",\"type\":\"npm\",\"version\":\"latest\"}]"
            }
        }

第三步) 使用下列CLI命令删除应用程序或应用程序环境

C:user\samadhan\Amplify-Projects\amplifyapp-demo>aws amplify delete-app --app-id d39pvb2qln4v7l
{
    "app": {
        "appId": "d39pvb2qln4v7l",
        "appArn": "arn:aws:amplify:ap-south-1:8509xxxxx:apps/d39pvb2qln4v7l",
        "name": "react-amplify-demo-project",
        "repository": "https://gitlab.com/samadhanfuke/react-amplify-demo-project",
        "platform": "WEB",
        "createTime": 1639077857.194,
        "updateTime": 1639077857.194,
        "iamServiceRoleArn": "arn:aws:iam::850915xxxx:role/amplifyconsole-backend-role",
        "environmentVariables": {
            "_LIVE_UPDATES": "[{\"name\":\"Amplify CLI\",\"pkg\":\"@aws-amplify/cli\",\"type\":\"npm\",\"version\":\"latest\"}]"
        },
        "defaultDomain": "d39pvb2qln4v7l.amplifyapp.com",
        "enableBranchAutoBuild": false,
        "enableBranchAutoDeletion": false,
        "enableBasicAuth": false,
        "customRules": [
            {
                "source": "/<*>",
                "target": "/index.html",
                "status": "404-200"
            }
        ],
        "productionBranch": {
            "lastDeployTime": 1639078272.607,
            "status": "SUCCEED",
            "branchName": "preview"
        },
        "buildSpec": "version: 1\nbackend:\n  phases:\n    # IMPORTANT - Please verify your build commands\n    build:\n      commands:\n        - '# Execute Amplify CLI with the helper script'\n        - amplifyPush --simple\nfrontend:\n  phases:\n    build:\n      commands: []\n  artifacts:\n    # IMPORTANT - Please verify your build output directory\n    baseDirectory: /\n    files:\n      - '**/*'\n  cache:\n    paths: []\n",
        "customHeaders": "",
        "enableAutoBranchCreation": false
    }
}

成功删除了包含环境的 Amplify 应用程序。 请检查 Amplify 控制台。


0
截至2022年9月26日,已发布了多个更新,修复了删除应用程序/后端的问题,包括s3存储桶或云形成堆栈已被删除的问题。

0
请注意,按照此处记录的删除放大应用程序并不会删除在S3中创建的资源。您需要手动删除这些资源。
当您运行amplify initamplify push等命令时,桶名称为amplify-{project name}-{env name}-{some id}-deployment的内容将被创建和更新。它似乎被用作远程同步目录。
每当您创建新环境或运行amplify init时,放大根CloudFormation堆栈将重新创建S3存储桶。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接